thread相關 讀寫鎖

2021-08-09 17:51:50 字數 1287 閱讀 7246

讀寫鎖初始化:

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

該函式第乙個引數為讀寫鎖指標,第二個引數為讀寫鎖屬性指標。函式按讀寫鎖屬性對讀寫鎖進行初始化。

加讀鎖: int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);

該函式引數為讀寫鎖指標。函式用於對讀寫鎖加讀鎖。

加寫鎖:int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);

釋放讀寫鎖: int pthread_rwlock_unlock(pthread_rwlock_t *rwlock);

該函式引數為讀寫鎖指標。函式用於釋放讀寫鎖,包括讀鎖與寫鎖。

銷毀讀寫鎖:int pthread_rwlock_destroy(pthread_rwlock_t *rwlock);

該函式引數為讀寫鎖指標。函式用於銷毀讀寫鎖。

程式舉例:

from

#include

#include

#include

#include

#pragma comment(lib, "pthreadvc2.lib") //必須加上這句

pthread_t t1; //pthread_t變數t1,用於獲取執行緒1的id

pthread_t t2; //pthread_t變數t2,用於獲取執行緒2的id

pthread_rwlock_t rwlock; //宣告讀寫鎖

int data

=1; //共享資源

void

* readerm(void

* arg)

return

null;

}void

* readern(void

* arg)

return

null;

}void

* writera(void

* arg)

return

null;

}void

* writerb(void

* arg)

return

null;

}void main(int argc,char** argv)

thread相關 互斥鎖

互斥鎖,是一種訊號量,常用來防止兩個程序或執行緒在同一時刻訪問相同的共享資源。可以保證以下三點 原子性 把乙個互斥量鎖定為乙個原子操作,這意味著作業系統 或pthread函式庫 保證了如果乙個執行緒 鎖定了乙個互斥量,沒有其他執行緒在同一時間可以成功鎖定這個互斥量。唯一性 如果乙個執行緒鎖定了乙個互...

讀寫鎖與自旋鎖

一 讀寫鎖 1 特點 讀寫鎖比mutex有更高的適用性,可以多個執行緒同時占用讀模式的讀寫鎖,但是只能乙個執行緒占用寫模式的讀寫鎖。1 當讀寫鎖是寫加鎖狀態時,在這個鎖被解鎖之前,所有試圖對這個鎖加鎖的執行緒都會被阻塞 2 當讀寫鎖在讀加鎖狀態時,所有試圖以讀模式對它進行加鎖的執行緒都可以得到訪問權...

互斥鎖和讀寫鎖

互斥鎖的型別 對資源的訪問是互斥的,即執行緒a對資源加鎖後,在a解鎖前,其他執行緒不能訪問這個加鎖的資源。互斥鎖的特點 多個執行緒訪問資源的時候是序列的 互斥鎖的使用步驟 建立乙個互斥鎖 pthread mutex t mutex 初始化這把鎖 pthread mutex init mutex,nu...