日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux多线程同步——互斥锁

發布時間:2025/3/21 linux 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux多线程同步——互斥锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

互斥鎖

當多個線程對同一個資源進行訪問的時候,為了這個資源的安全性,我們需要對這個資源進行鎖定,規定同一時間只有一個資源能夠獲得該鎖的鑰匙,其它線程要獲得該資源需要等待該線程


互斥鎖創建

pthread_mutex_t mutex;

互斥鎖初始化

mutex = PTHREAD_MUTEX_INITIALIZER;
或 pthread_mutex_init(&mutex);

互斥鎖上鎖

pthread_mutex_lock(&mutex);

互斥鎖解鎖

pthread_mutex_lock(&mutex);

銷毀互斥鎖

pthread_mutex_destroy(&mutex);


#include <pthread.h> #include <sys/syscall.h> #include <stdlib.h> #include <stdio.h>void* ret_result_thread1; void* ret_result_thread2; pthread_mutex_t mutex;void* thread1Func(void* arg) {pthread_mutex_lock(&mutex);printf("childThread id:%u is running\n", syscall(SYS_gettid));sleep(5);pthread_mutex_unlock(&mutex);pthread_exit((void*)0); }int main(int argc, char** argv) {printf("main thread start\n");pthread_mutex_init(&mutex,NULL);pthread_t thread1,thread2;int ret1;int ret2;if( (ret1 = pthread_create(&thread1,NULL,thread1Func,NULL)) != 0){perror("thread1 create failed");}if( (ret2 = pthread_create(&thread2,NULL,thread1Func,NULL)) != 0){perror("thread2 create failed");}printf("main thread end\n");pthread_join(thread1,ret_result_thread1);pthread_join(thread2,ret_result_thread2); pthread_mutex_destroy(&mutex);return 0; }


線程1運行,等2秒,線程1釋放鎖,線程2執行

總結

以上是生活随笔為你收集整理的Linux多线程同步——互斥锁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。