Linux C多線程共享數據併發鎖之mutex

// 多線程競爭鎖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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章