天天看點

Linux系統程式設計之互斥鎖

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. 代碼運作結果:

Linux系統程式設計之互斥鎖

繼續閱讀