一、死锁

死锁不是锁,而是使用锁的过程中使用错误的现象

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;//解锁