目录
互斥锁
读写锁
自旋锁
条件变量
屏障
互斥锁两种状态:
(1)加锁,pthread_mutex_lock() 。
(2)不加锁,pthread_mutex_unlock() 。
读写锁三种状态:
(1)读模式下的加锁状态,多个线程可以同时占有该锁,pthread_rwlock_rdlock() 。
(2)写模式下的加锁状态,只有一个线程占有该锁,pthread_rwlock_wrlock() 。
(3)不加锁状态,pthread_rwlock_unlock() 。
自旋锁特有性质:线程在获取锁之前一直处于忙等状态(自旋)。
两种状态:
(1)加锁,pthread_spin_lock() 。
(2)不加锁,pthread_spin_unlock() 。
条件变量1、功能:为线程提供了一种回合的场所。
2、常用函数:pthread_cond_wait(pthread_cond_t,pthread_mutex_t) 。
mutex 的作用是对 cond 进行保护,因为函数的功能是把调用函数放到等待 cond 变化的线程列表中,如果在放置的过程中,没有对条件进行加锁,那么条件变化了,调用线程是无法感知的,从而导致了未知的错误。
屏障功能:允许每个线程等待,知道所有的合作线程都到达某一点,然后再继续往下执行。
栗子:pthread_join() 。
(SAW:Game Over!)