互斥鎖總結
分類
互斥鎖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...