執行緒之互斥鎖

2021-07-10 12:48:29 字數 1331 閱讀 9773

在乙個多執行緒的程式中,有時需要同時對共享資源的訪問,就會造成對共享資源的讀寫問題。

例如:有五個執行緒,其中乙個對共享資源進行修改,其餘四個執行緒需要同時對共享資源進行讀訪問。勢必會造成其餘四個執行緒讀取資料的不穩定。此時就可以使用互斥鎖去解決這一問題。

當修改共享資源的執行緒需要對資料進行修改時,首先得到互斥鎖,進行加鎖。其他程序就被阻塞不可以去讀取資源了。操作完成後,解鎖,其他執行緒就可以對資源進行訪問了。

關於互斥鎖的操作有以下步驟:

1、初始化互斥鎖

pthread_mutex_init(&mutex,null);

2、對操作的資料加鎖

pthread_mutex_lock(&mutex); 「`

3、對操作的資料解鎖

pthread_mutex_unlock(&mutex);

4、銷毀互斥鎖

pthread_mutex__destroy(&mutex); 「

#include 

#include

#include

#include

#include

//目的建立多個執行緒,乙個對共享資源進行修改,四個對共享資源進行訪問

#if 0

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);

int pthread_join(pthread_t thread, void **retval);

#endif

char name = "hello,world!";

pthread_mutex_t mutex;

void *start_routine_read(void *arg)

return (void *)0;

}void *start_routine_write(void *arg)

return (void *)0;

}int main(void)

pthread_create(thread,null,start_routine_write,null);

while(1);

pthread_mutex_destroy(&mutex);

//**執行緒資源

for(i = 1;i < 5;i++)

pthread_join(thread[0],null);

return

0;}

**中尚有不完善指出,請指出,謝謝!

多執行緒之互斥鎖

當執行緒之間需要用到共同的變數時,不希望某乙個執行緒使用時,被其它執行緒給呼叫,就需要互斥鎖來保證共享資源該執行緒使用完後,再給其它執行緒使用 典型例子 由於執行緒是獲取到作業系統分配的cpu時間片是才會執行,所以單cpu的情況下,多執行緒同步其實並非同步,當其中乙個執行緒1執行的時候,可能會中途跳...

執行緒之互斥鎖與死鎖

互斥鎖 1 互斥鎖基本原理 互斥鎖是乙個二元變數,其狀態為開鎖 允許0 和上鎖 禁止1 將某個共享資源與某個特定互斥鎖在邏輯上繫結 要申請該資源必須先獲取鎖 1 訪問公共資源前,必須申請該互斥鎖,若處於開鎖狀態,則申請到鎖物件,並立即占有該鎖,以防止其他執行緒訪問該資源 如果該互斥鎖處於鎖定狀態,則...

linux多執行緒程式設計之互斥鎖

執行緒的同步問題 乙個程序中的多個執行緒是共享同一段資源的,由於執行緒對資源的競爭引出了鎖。其中mutex是一種簡單的加鎖方法,這個互斥鎖只有兩種狀態,那就是上鎖和解 鎖,可以把互斥鎖看作是某種意義上的全域性變數。在某一時刻,只能有乙個執行緒取得這個互斥上的鎖,擁有上鎖狀態的執行緒可以對共享資源進行...