一、死锁
死锁不是锁,而是使用锁的过程中使用错误的现象
1.当线程试图对同一个互斥变量mutex加锁两次及反复加锁时,会发生死锁
2.两个线程各自拥有一把锁,再去请求另外一把锁时,会发生死锁
二、读写锁
读写锁,并不是有两把锁一把读锁,一把写锁,而是只有一把锁。读写只是两种状态,在读模式下的加锁状态叫读锁,在写模式下的加锁状态叫作写锁。
读写锁的特性
1.读写锁是读模式加锁时,如果线程以读模式对共享资源加锁会成功,如果线程以写模式加锁会失败。
2.读写锁是读模式加锁时,有想要以写模式加锁的线程,也有想要以读模式加锁的线程,读写锁会阻塞之后读模式的加锁请求,优先响应写模式锁的请求。即写模式的优先级高。
3.读写锁是写模式加锁时,解锁之前,所有对该锁加锁的线程都会被阻塞。
总结为:读锁也称共享锁,写锁称为独占锁,写独占,读共享。
pthread_rwlock_init;//初始化读写锁
pthread_rwlock_destroy;//销毁读写锁
pthread_rwlock_rdlock;//读模式加锁
pthread_rwlock_wrlock;//写模式加锁
pthread_rwlock_tryrdlock;//尝试加读锁
pthread_rwlock_trywrlock;//尝试加写锁
pthread_rwlock_unlock;//解锁