线程同步之读写锁

来源:互联网 发布:宁波淘宝商城外包 编辑:程序博客网 时间:2024/05/22 06:59

读写锁:

                1、  读写锁的概念:是一把锁,是一个pthread_rwlock_t 类型的锁机制

                       拥有读(读内存操作)属性和写(写内存操作)属性的锁。

                2、  读写锁的特性:读共享,写独占。

                       读写互斥不能同时进行:先读后写阻塞。

                       与互斥锁的不同;互斥锁读写独占、读写锁读共享,写互斥。

                       写的优先级高:写操作被阻塞,后面读的直接阻塞、读写阻塞,锁解开时先执行写操作。

                3、  读写锁的场景分析

                       程序中读操作大于写的操作

                4、  主要的操作函数

                               创建锁:pthread_rwlock_t rwlock;//创建读写锁

                               初始化读写锁

                      pthread_rwlock_init(pthread_rwlock_t*restrict rwlock,const pthread_rwlockattr_t *restrict attr);

                               销毁读写锁

                                pthread_rwlock_destroy(pthread_rwlock_t*rwlock);  

                               加读锁   

                              pthread_rwlock_rdlock(pthread_rwlock_t*rwlock);             

                               尝试加读锁

                              pthread_rwlock_tryrdlock(pthread_rwlock_t*rwlock);

                              § 加锁成功:0

                              § 失败返回错误号,不阻塞。

                              加写锁       

                              pthread_rwlock_wrlock(pthread_rwlock_t*rwlock);

                               § 上一次加锁写锁,还没有解锁则阻塞

                               §  上一次加读锁,没解锁则阻塞。

                             尝试加写锁

                              pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock);

                             解锁 

                              pthread_rwlock_unlock(pthread_rwlock_t*rwlock);

                
原创粉丝点击