亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
汤阴县| 聂拉木县| 大埔区| 墨脱县| 柳林县| 新宁县| 延川县| 彝良县| 延津县| 竹溪县| 武川县| 普兰县| 驻马店市| 慈利县| 拜泉县| 金平| 湘潭县| 松江区| 甘德县| 太和县| 云龙县| 哈巴河县| 民权县| 习水县| 阿坝| 林口县| 赣州市| 岗巴县| 富平县| 博野县| 安新县| 高台县| 微博| 鲁甸县| 亚东县| 肇庆市| 色达县| 辰溪县| 苍梧县| 武宣县| 曲沃县|