RWlock
by
读写锁
读写锁也叫共享独占锁。当读写锁以读模式锁住时,它是以共享模式锁住的;当它以写模式锁住时,它是以独占模式锁住的
读写锁使用场合
- 读写锁非常适合于对数据结构读的次数远大于写的情况
读写锁特性
- 读写锁是“写模式加锁”时,解锁前,所有对该锁加锁的线程都会被阻塞
- 读写锁是“读模式加锁”时,如果线程以读模式对其进行加锁会成功;如果线程以写模式加锁会阻塞(读写互斥)
- 读写锁是“读模式加锁”时,既有试图以写模式加锁的线程,也有试图以读模式加锁的线程,那么读写锁会阻塞随后的读模式请求,优先满足写模式锁(读锁、写锁并行阻塞,写锁优先级高)
读写锁使用步骤
//先定义一把读写锁
pthread_rwlock_t rwlock;
//初始化读写锁
pthread_rwlock_init(&rwlock, NULL);
//加锁
pthread_rwlock_rdlock(&rwlock); //--->加读锁
pthread_rwlock_wrlock(&rwlock); //--->加写锁
//////////////////////////
//共享资源出现位置
/////////////////////////
//解锁
pthread_rwlock_unlock(&rwlock);
//释放锁
pthread_rwlock_destroy(&rwlock);