91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
介休市| 绍兴县| 通渭县| 潜江市| 区。| 孝感市| 石首市| 乌海市| 简阳市| 济阳县| 文水县| 阳谷县| 佛山市| 东光县| 郸城县| 青海省| 西丰县| 太和县| 兴安县| 蓬溪县| 临夏市| 德昌县| 宁明县| 井研县| 大渡口区| 美姑县| 上蔡县| 霍山县| 永吉县| 东城区| 乐山市| 莱芜市| 德令哈市| 儋州市| 盐城市| 留坝县| 岱山县| 门头沟区| 公安县| 攀枝花市| 保定市|