1.什麼是互斥鎖
互斥鎖是作業系統為了多線程能夠安全的通路競态資源而設定的,當一個線程對互斥鎖上鎖後,另一個線程再去上鎖的話,就會阻塞,隻能等那個線程對互斥鎖解鎖後,才能上鎖成功,是以在同一時刻,隻能有一個線程通路競态資源。
2. 互斥鎖相關函數:
- pthread_mutex_init() //動态初始化互斥鎖
- pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER //靜态初始化互斥鎖
- pthread_mutex_lock() //互斥鎖上鎖
- pthread_mutex_unlock() //互斥鎖解鎖
- pthread_mutex_destroy() //銷毀互斥鎖
3. 互斥鎖實作代碼:
#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
pthread_mutex_t mutex;
void *pthread1()
{
while(1)
{
pthread_mutex_lock(&mutex);
printf("hello ");
printf("我是子線程\n");
pthread_mutex_unlock(&mutex);
sleep(1);
}
}
int main()
{
pthread_t th1;
pthread_mutex_init(&mutex,NULL);//初始化互斥鎖
pthread_create(&th1,NULL,pthread1,NULL);//建立子線程
while(1)
{
pthread_mutex_lock(&mutex);
printf("HELLO ");
printf("我是主線程\n");
pthread_mutex_unlock(&mutex);
sleep(1);
}
pthread_mutex_destroy(&mutex);//銷毀互斥鎖
return 0;
}
4. 代碼運作結果: