// 多線程競爭鎖mutex處理併發 #include <stdio.h> #include <pthread.h> #define LOOP 5000000 // 由於目前cpu處理速度過快,請保證這個值夠大才會出現最後結果不對情況 int counter = 0; // 計數器 pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // mutex鎖 void *count() { for (int i = 0; i < LOOP; i++) { pthread_mutex_lock(&mutex); int temp = counter; counter = counter + 1; pthread_mutex_unlock(&mutex); } } int main(int argc, char **argv) { pthread_t tidA, tidB; pthread_create(&tidA, NULL, count, NULL); pthread_create(&tidB, NULL, count, NULL); pthread_join(tidA, NULL); pthread_join(tidB, NULL); printf("%d\n", counter); return 0; }
Linux C多線程共享數據併發鎖之mutex
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.