Linux多线程开发-线程同步-读写锁pthread_rwlock_t
生活随笔
收集整理的這篇文章主要介紹了
Linux多线程开发-线程同步-读写锁pthread_rwlock_t
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、讀寫鎖概念
對資源的訪問抽象為兩種類型,即獨占和共享。獨占資源具有排他性,例如寫操作。共享資源可以同時由多個線程訪問,不對該資源執行寫操作。針對資源的讀和寫操作分別加鎖,寫操作加鎖與互斥鎖相同,但讀操作加鎖可以讓多個線程同時訪問。
優點:互斥鎖進入臨界區后,未獲得鎖的線程會阻塞,因此,會降低程序的并發效率。讀寫鎖可以對讀操作高效訪問,提高資源利用效率,并發性能更高。
POSIX庫中用類型pthread_rwlock_t來定義互斥鎖,類型在pthreadtypes.h中定義。
2、如何聲明一個讀寫鎖
#include <pthread.h>pthread_rwlock_t rwlock;3、如何初始化一個讀寫鎖
//靜態初始化讀寫鎖 pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER;//動態初始化讀寫鎖 pthread_rwlock_t rwlock; pthread_rwlock_init(&rwlock,NULL);靜態初始化的讀寫鎖不需要銷毀,動態初始化的讀寫鎖需要銷毀,銷毀函數聲明如下:
int pthread_rwlock_destroy(pthread_rwlock_t *rwlock);4、如何上鎖和解鎖
//讀模式:上鎖方式1,程序進入臨界區,如果寫模式已經上鎖,則阻塞等待,如果讀模式上鎖,則獲得鎖進入臨界區 int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);//讀模式:上鎖方式2,程序進入臨界區,如果讀寫已經上鎖,不阻塞,返回EBUSY int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock);//寫模式:上鎖方式1,程序進入臨界區,如果讀寫已經上鎖,不阻塞,返回EBUSY int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);//寫模式:上鎖方式2,程序進入臨界區,如果讀寫已經上鎖,不阻塞,返回EBUSY int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock);//解鎖,程序退出臨界區 int pthread_rwlock_unlock(pthread_rwlock_t *rwlock);?
總結
以上是生活随笔為你收集整理的Linux多线程开发-线程同步-读写锁pthread_rwlock_t的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 布尔表达式_java - 布
- 下一篇: java annotation应用_ja