1. 需要使用到的庫pthread.h
2. 需要使用到的函式有pthread_mutex_init, pthread_mutex_destory, pthread_mutex_lock, pthread_unlock,
3. 需要保護的資料結構為
typedef struct cnt_sum cnt_sum
兩個操作執行緒分別對此結構資料進行累加操作,以下為具體的累加函式
add1函式如下所示:
void *add1(void *arg)
return (void *)0;
}
add2函式如下所示:
void *add2(void *arg)
return (void *0);
}
自帶的sleep函式睡眠時間為1s,時間太長,編寫了乙個精度為毫秒的休眠函式,以下為具體的休眠函式**
void custom_sleep(int ms)
程式的完成**如下所示:
#include #include #include #include #include #include typedef struct ct_sum ct_sum;
void custom_sleep(int ms)
void *add1(void *arg)
return 0;
}void *add2(void *arg)
return 0;
}int main(void)
編譯程式**
gcc -o mutex mutex.c
執行**即可看到相應的結果
./mutex
可以看到示例如下:
執行緒同步與互斥 實現互斥鎖
今天我們來分享一下,執行緒同步與互斥 互斥鎖的實現。多個執行緒同時訪問共享資料時可能會產生衝突,造成程式執行結果不是我們所預期的結果。不產生衝突的多執行緒訪問情況,和截圖如下 產生衝突的多執行緒訪問情況,和截圖如下 注 每執行一次,結果都可能會不同。由於多執行緒訪問共享資料時可能會產生衝突,不能保證...
linux c 多執行緒互斥鎖
beers.c include include include include include include int beers 2000000 建立互斥鎖,互斥鎖對所有可能發生衝突的執行緒可見,是乙個全域性變數.pthread mutex initializer實際上是乙個巨集,當編譯器看到它,...
同步鎖2 互斥鎖
1 import threading 2import time 34 num 100 5def add 6global num7 s num 8 time.sleep 0.02 9 num s 1 1011 l list 12for i in range 100 13 t threading.thr...