目錄
一 開發環境
二 互斥鎖
系統:ubuntu16.04
執行緒庫:pthread
語言:c/c++
linux下的執行緒保護,最常用的是互斥鎖、條件變數、訊號量和讀寫鎖。
先來試一下互斥鎖吧
多執行緒之間可能需要互斥的訪問一些全域性變數,這就需要互斥的來訪問,這些需要共享訪問的字段被稱作是臨界資源,訪問臨界資源的程式段稱作是臨界區。
實現執行緒間的互斥與同步機制的是鎖機制,下面是常用的鎖機制的函式和類。
示例**:pthread_mutex_t mutex
鎖物件
pthread_mutex_init(&mutex,null)
在主線程中初始化鎖為解鎖狀態
pthread_mutex_t mutex = pthread_mutex_initializer
編譯時初始化鎖為解鎖狀態
pthread_mutex_lock(&mutex)(阻塞加鎖)
訪問臨界區加鎖操作pthread_mutex_trylock( &mutex)(非阻塞加鎖); pthread_mutex_lock() 類似,不同的是在鎖已經被佔據時返回 ebusy 而不是掛起等待。
pthread_mutex_unlock(&mutex)
:訪問臨界區解鎖操作
#include #include #include #include int num = 0;
void thread_num(void);
pthread_mutex_t mutex = pthread_mutex_initializer;
int main()
void thread_num(void)
num++;
printf("%u:num=%d\n",pthread_self(),num);
if(pthread_mutex_unlock(&mutex) != 0)
sleep(1);
}}
執行結果:
自用 linux下多執行緒
3 簡單的多執行緒示例 乙個簡單的linux多執行緒示例如下 include include include include void thread function void arg char message hello world int main printf waiting for thre...
linux下多執行緒程式設計
先看執行的結果 1 主函式正在建立執行緒,2執行緒1被建立 3 thread1 i m thread 1th 4執行緒2被建立 5 thread2 i m thread 2nd 6 thread2 number 0 7執行緒3被建立 8主函式正在等待執行緒結束.9 thread1 number 0 ...
linux下的多執行緒學習
下面先來乙個例項來感受下linux下c語言多執行緒程式設計的樂趣!我們通過建立兩個執行緒來實現對乙個數的遞加。先不去理會 的含義,我們先執行linux,在其中編寫我們的第乙個c語言多執行緒程式。include include include include include define max 10...