中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

Linux怎么向全局變量添加互斥鎖

小億
95
2023-11-30 19:20:34
欄目: 智能運維

要向全局變量添加互斥鎖,可以使用Linux系統提供的pthread庫中的互斥鎖。以下是一個示例代碼:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

int global_var = 0;
pthread_mutex_t mutex;

void* thread_function(void* arg) {
    // 加鎖
    pthread_mutex_lock(&mutex);

    // 修改全局變量
    global_var++;

    // 解鎖
    pthread_mutex_unlock(&mutex);

    return NULL;
}

int main() {
    pthread_t thread1, thread2;

    // 初始化互斥鎖
    pthread_mutex_init(&mutex, NULL);

    // 創建線程
    pthread_create(&thread1, NULL, thread_function, NULL);
    pthread_create(&thread2, NULL, thread_function, NULL);

    // 等待線程結束
    pthread_join(thread1, NULL);
    pthread_join(thread2, NULL);

    // 打印最終結果
    printf("global_var = %d\n", global_var);

    // 銷毀互斥鎖
    pthread_mutex_destroy(&mutex);

    return 0;
}

在上述代碼中,我們使用了pthread庫中的pthread_mutex_t數據類型來定義一個互斥鎖變量mutex。在各個線程中修改全局變量global_var之前,先使用pthread_mutex_lock函數來加鎖,然后修改完全局變量后使用pthread_mutex_unlock函數來解鎖。這樣可以保證在同一時間只有一個線程可以修改全局變量,避免了競爭條件的發生。最后,通過pthread_mutex_init和pthread_mutex_destroy來初始化和銷毀互斥鎖。

需要注意的是,不要忘記在每個線程中使用pthread_mutex_lock和pthread_mutex_unlock成對出現,否則可能導致死鎖或其他問題。

0
定兴县| 彝良县| 阜城县| 上饶县| 达拉特旗| 渭源县| 资源县| 盘锦市| 盐边县| 灵寿县| 娄底市| 昌黎县| 靖宇县| 广饶县| 察雅县| 麻栗坡县| 朔州市| 方正县| 鄂伦春自治旗| 山东省| 阜阳市| 伊春市| 镇宁| 旬阳县| 盐亭县| 安远县| 海安县| 抚州市| 深泽县| 诸城市| 泰宁县| 通渭县| 繁峙县| 宝兴县| 保亭| 四会市| 白水县| 焉耆| 北海市| 司法| 平湖市|