Linux多线程同步——互斥锁
生活随笔
收集整理的這篇文章主要介紹了
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多线程同步——互斥锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux多线程——异步
- 下一篇: Linux多线程同步——信号量