首先,先了解一下互斥的含義:同一時間隻能有一個線程執行,執行完畢後其他線程再執行。
采用互斥鎖來完成,這之間涉及四個函數(學習一個函數應該從功能、參數、傳回值 來入手):
一、初始化一個互斥鎖
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);