天天看點

線程間的互斥機制

首先,先了解一下互斥的含義:同一時間隻能有一個線程執行,執行完畢後其他線程再執行。

采用互斥鎖來完成,這之間涉及四個函數(學習一個函數應該從功能、參數、傳回值 來入手):

  一、初始化一個互斥鎖

pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutexattr_t *mutexattr)

參數:

        mutex: 互斥鎖 (這裡要注意類型)

        mutexattr:互斥鎖的屬性(NULL為預設屬性)

傳回值:

        互斥鎖初始化成功傳回0

二、上鎖

pthread_mutex_lock(pthread_mutex_t *mutex);

參數:互斥鎖

傳回值:成功傳回0,失敗傳回非0

三、解鎖

pthread_mutex_unlock(pthread_mutex_t *mutex);

參數:互斥鎖

傳回值:成功傳回0,失敗傳回非0

四、銷毀一個互斥鎖

pthread_mutex_destroy(pthread_mutex_t *mutex);

參數:互斥鎖

傳回值:成功傳回0,失敗傳回非0

具體使用方法:

        首先建立一個互斥鎖:(互斥鎖是一個變量,類型由typedef 共用體取别名得到)

                pthread_mutex_t  mutex;

       第二步初始化互斥鎖:(調用函數)

                prhread_mutex_t_init(mutex,NULL);

        第三步上鎖:(調用函數    需要注意  要上鎖的為對共享資源的操作,而不是共享資源)

                pthread_mutex_t_lock(mutex);

        第四步解鎖:(調用函數)

                pthread_mutex_t_unlock(mutex);

        第五步銷毀互斥鎖:(調用函數)

                pthread_mutex_t_destroy(mutex);

繼續閱讀