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

2021-07-27 09:12:52 字數 1976 閱讀 5100

互斥鎖總結

分類

互斥鎖mutex

條件變數cond

初始化

靜態方式

pthread_mutex_initializer

pthread_mutex_t  mutex = pthread_mutex_initalizer

pthread_cond_initializer

pthread_cond_t   cond  = pthread_mutex_initalizer

動態方式

利用初始化函式和釋放函式

intpthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restric attr);

intpthread_mutex_destroy(pthread_mutex_t *mutex);

intpthread_cond_init(pthread_cond_t   *cond,   pthread_condattr_t   *cond_attr)

intpthread_cond_destroy(pthread_cond_t   *cond)

使用方法

互斥鎖的使用

是在每個執行緒中當要對共有資源進行操作的時候,先加鎖   再執行程式   再解鎖

intpthread_mutex_lock(pthread_mutex_t *mutex);

intpthread_mutex_unlock(pthread_mutex_t *mutex);

條件變數的使用

加鎖-------(解鎖, 等待條件滿足,加鎖)---------解鎖

條件變數必須與互斥鎖一起使用,防止競爭,

同時cond_wait的構造也決定了這種用法

1.加鎖

intpthread_mutex_lock(pthread_mutex_t *mutex);

2.cond等待條件滿足

//cond條件等待函式

intpthread_cond_wait(pthread_cond_t   *cond,   pthread_mutex_t   *mutex)

//等待cond訊號,如果超過設定的時間,即使沒收到訊號也會返回

intpthread_cond_timedwait(pthread_cond_t   *cond,   pthread_mutex_t   *mutex,   const   struct   timespec   *abstime)

//cond滿足訊號傳送函式

intpthread_cond_signal(pthread_cond_t *cond);

3.解鎖

intpthread_mutex_unlock(pthread_mutex_t *mutex);

多執行緒程式設計 互斥鎖

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

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

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

多執行緒 互斥鎖

include include include handle mutex null srwlock g lock 改變乙個變數的時候需要鎖定 int num 6400000 在讀期間,值一直在變化,沒有鎖定。dword winapi reada void p i 使用acquiresrwlocksh...