1.互斥鎖
互斥鎖在同一時刻只允許乙個執行緒訪問資源。
#include pthread_mutex_t mutex;
pthread_mutex_init(&mutex,null);//初始化
或者這種方式初始化:
pthread_mutex_t mutex=pthread_mutex_initializer;
對鎖變數進行加鎖的方式如下:
pthread_mutex_lock(&mutex);
解鎖的方式如下:
pthread_mutex_unlock(&mutex);
2.條件鎖
pthread_cond_t cond;//定義條件變數
pthread_cond_init(cond,null);//初始化條件變數
或者另一種方式初始化
pthread_cond_t cond=pthread_cond_initializer;
等待條件發生,條件沒有發生,執行緒阻塞
pthread_cond_wait(cond,mutex);
pthread_cond_wait首先解鎖互斥鎖,然後等待條件發生,條件發生則再對互斥鎖加鎖
喚醒條件
pthread_cond_signal(cond);
或者通過這種方式喚醒條件:
pthread_cond_broadcast(cond);
通常為了防止虛假喚醒,一般在while迴圈裡使用該函式。
執行緒1有如下**:
pthread_mutex_lock(&(pool->lock));//對執行緒池上鎖
while((pool->queue_size==0) && !(pool->shut_down))
在另乙個執行緒裡,有如下**,用來喚醒執行緒1
pthread_cond_signal(&(pool->cond));
3.自旋鎖
4.讀寫鎖
5.遞迴鎖
未完。。。。
c 執行緒中的幾種鎖
這個是在中興面試中被面試問到的乙個題 你知道執行緒中的自旋鎖麼?我當時一臉懵逼,不知道。回來後整理下,在這裡對執行緒中的鎖進行乙個學習。執行緒之間的鎖有 互斥鎖 條件鎖 自旋鎖 讀寫鎖 遞迴鎖。一般而言,鎖的功能越強大,效能就會越低。1 互斥鎖 互斥鎖用於控制多個執行緒對他們之間共享資源互斥訪問的乙...
c 執行緒中的幾種鎖
執行緒之間的鎖有 互斥鎖 條件鎖 自旋鎖 讀寫鎖 遞迴鎖。一般而言,鎖的功能越強大,效能就會越低。1 互斥鎖 互斥鎖用於控制多個執行緒對他們之間共享資源互斥訪問的乙個訊號量。也就是說是為了避免多個執行緒在某一時刻同時操作乙個共享資源。例如執行緒池中的有多個空閒執行緒和乙個任務佇列。任何是乙個執行緒都...
c 執行緒中的幾種鎖
這個是在中興面試中被面試問到的乙個題 你知道執行緒中的自旋鎖麼?我當時一臉懵逼,不知道。回來後整理下,在這裡對執行緒中的鎖進行乙個學習。執行緒之間的鎖有 互斥鎖 條件鎖 自旋鎖 讀寫鎖 遞迴鎖。一般而言,鎖的功能越強大,效能就會越低。1 互斥鎖 互斥鎖用於控制多個執行緒對他們之間共享資源互斥訪問的乙...