1. 程式人生 > >linux多執行緒入門(二)互斥量

linux多執行緒入門(二)互斥量

當多個執行緒訪問一個共享的變數的時候是非常危險的,可能會拿到錯誤的資料或者程式崩潰!

所以為了安全的使用執行緒引入了互斥量的做法

兩個互斥量的函式為

pthread_mutex_lock(pthread_mutex_lock* lock)
pthread_mutex_unlock(pthread_mutex_lock* lock)

具體使用也很簡單

static int total_count;//全域性變數
pthread_mutex lock = PTHREAD_MUTEX_INITIALIZER;//申請個互斥鎖並且給其初始化


在每個執行緒裡修改total_count全域性變數的地方新增上

pthread_mutex_lock(&lock);   //加鎖
total_count++; //修改共享變數的值
pthread_mutex_unlock(&lock); //解鎖

互斥量的作用在於當這個變數lock的時候,別的執行緒去也執行到這個lock的地方,那就會在這個地方掛起等待這個變數的解鎖。當鎖被另外一個執行緒解開的時候,另外執行緒就會在lock的地方結束掛起,繼續執行,lock鎖然後去操作變數。如果有一個執行緒不遵守這個規則直接去修改變數那就沒辦法了,這個就是沒加鎖導致執行緒不安全的隱患了。