linux多執行緒(互斥鎖)

2021-10-22 03:38:51 字數 1113 閱讀 8331

當多個執行緒想要對同乙個資源進行操作的時候,為了使得不出現髒讀的情況,要用互斥鎖來規定執行緒的先後順序。互斥鎖和訊號量的作用類似。

/*鎖的資料型別*/

pthread_mutex_t mutes;

/*鎖的初始化*/

int pthread_mutex_init(pthread_mutex_t*, const pthread_mutexattr_t*);

/*鎖的銷毀函式*/

int pthread_mutex_destory(pthread_mutex_t*);

/*給互斥鎖加鎖 當該鎖被別的執行緒占用那麼這個函式將會阻塞*/

int pthread_lock(pthread_mutex_t*);

/*非阻塞*/

int pthread_trylock(pthread_mutex_t*);

/*釋放互斥鎖*/

int pthread_unlock(pthread_mutex_t*);

在乙個執行緒當中對普通鎖再次加鎖會照成死鎖,在多個執行緒當中由於不同執行緒的加鎖和釋放邏輯出現問題也會照成死鎖,使得程式無法正常進行。

讀寫鎖的特點,多個執行緒可以獲得同乙個資源的讀鎖,進行資源的讀取,當有乙個執行緒拿到資源的寫鎖時,其他所有執行緒即不能拿到讀鎖也不能拿到寫鎖,提高了效率。

#include//初始化鎖

int pthread_rwlock_init( pthread_rwlock_t *rwlock, const pthread_rwlock_attr* 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);

Linux多執行緒互斥鎖

多執行緒程式設計中,多執行緒程式設計 可以用互斥鎖 也稱互斥量 可以用來保護關鍵 段,以確保其獨佔式的訪問,這有點像二進位制訊號量。posix互斥鎖相關函式主要有以下5個 cpp view plain copy include intpthread mutex init pthread mutex ...

Linux多執行緒程式設計 執行緒互斥鎖

通過下面的練習加深對執行緒的概念的理解,同時明確執行緒的控制。從而進一步了解執行緒的互斥,並學會利用pthread庫。定義乙個用於互斥的互斥鎖 和乙個主函式和兩個子執行緒都能訪問的共享變數,乙個主函式和兩個用來建立子執行緒的子函式 在主函式中定義兩個子執行緒id的變數,初始化互斥鎖,建立對應函式的子...

Linux多執行緒同步 互斥鎖

當多個執行緒對同乙個資源進行訪問的時候,為了這個資源的安全性,我們需要對這個資源進行鎖定,規定同一時間只有乙個資源能夠獲得該鎖的鑰匙,其它執行緒要獲得該資源需要等待該執行緒 互斥鎖建立 pthread mutex t mutex 互斥鎖初始化 mutex pthread mutex initiali...