#include
互斥鎖——用於主動獲取共享資源時的互斥與等待
static pthread_mutex_t mutex = pthread_mutex_initializer;
int pthread_mutexattr_init(pthread_mutexattr_t*);
int pthread_mutexattr_setpshared(pthread_mutexattr_t*, int);
pthread_process_shared/pthread_process_private
在中定義了_posix_thread_process_shared時才能指定程序間共享屬性
int pthread_mutexattr_getpshared(pthread_mutexattr_t*, int);
int pthread_mutexattr_destroy(pthread_mutexattr_t*);
int pthread_mutex_init(pthread_mutex_t* , pthread_mutexattr_t*);條件變數——用於獲取共享資源時受到被動的提醒int pthread_mutex_lock(pthread_mutex_t*);
int pthread_mutex_trylock(pthread_mutex_t*);
int pthread_mutex_unlock(pthread_mutex_t*);
int pthread_mutex_destroy(pthread_mutex_t*);
static pthread_cond_t cond = pthread_cond_initializer;
int pthread_condattr_init(pthread_mutexattr_t*);
int pthread_condattr_setpshared(pthread_condattr_t*, int);
int pthread_condattr_getpshared(pthread_condattr_t*, int);
int pthread_condattr_destroy(pthread_mutexattr_t*);
int pthread_cond_init(pthread_cond_t * );int pthread_cond_wait(pthread_cond_t *,pthread_mutex_t* );
int pthread_cond_timedwait(
pthread_cond_t
*,pthread_mutex_t*
, const struct timespec *abstime);
此處採用絕對時間,好處是,若因為捕獲到訊號而提前解阻塞,再次進入阻塞態時無須修改時間引數
int pthread_cond_signal(pthread_cond_t *);
int pthread_cond_broadcast(pthread_cond_t *);
int pthread_cond_destroy(pthread_cond_t *);
pthread_mutex_lock(mutex4test);//保護對測試變數的讀取
while(test) //測試變數
pthread_cond_wait(cond
,mutex4test
); //解鎖對測試變數的保護並阻塞等待 解阻塞後繼續鎖定測試變數
pthread_mutex_unlock(mutex4test); //解除對測試變數的保護
同步執行緒 條件變數與互斥鎖
一。互斥量和條件變數簡介 互斥量 mutex 從本質上說是一把鎖,在訪問共享資源前對互斥量進行加鎖,在訪問完成後釋放互斥量上的鎖。對互斥量進行加鎖以後,任何其他試圖再次對互斥鎖加鎖的執行緒將會阻塞直到當前執行緒釋放該互斥鎖。如果釋放互斥鎖時有多個執行緒阻塞,所有在該互斥鎖上的阻塞執行緒都會變成可執行...
執行緒同步 互斥鎖 條件變數
在 執行緒同步 互斥鎖 一文中,我們分析了只用互斥鎖同步執行緒的弊端 cpu的效率和時效性不可兼得。下面,我們通過使用條件變數,在保證cpu效率的前提下,提高程式的時效性。只用互斥鎖同步執行緒,其cpu佔用率之所以高,是因為執行緒需要輪詢,即需要不停的檢查條件是否滿足。我們使用條件變數,當條件不滿足...
互斥鎖與條件變數
最近複習湯小丹的 計算機作業系統 西安電子科技大學出版社,第三版 程序 執行緒同步章節時,發現乙個疑問。在講程序同步時,提到了兩類方法 訊號量機制和管程機制。訊號量機制又包括四種 整型訊號量 記錄型訊號量 and型訊號量 訊號量集。如果採用整型訊號量或記錄型訊號量,則在共享多個資源時,可能出現程序死...