日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux多线程开发-线程同步-读写锁pthread_rwlock_t

發布時間:2023/12/10 linux 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。