執行緒通訊中的mutex執行緒控制詳解

2021-07-09 13:20:38 字數 714 閱讀 5380

今天在編寫多執行緒通訊的時候,關於共享資源的操作不衝突,應用互斥鎖方面有些不是很清楚,通過編寫一些例子和看書的解釋說明,在這裡我做下我對這方面的總結:

mutex 是一種簡單的加鎖的方法來控制對共享資源的訪問。這個互斥鎖只有兩種狀態,

也就是上鎖和解鎖,可以把互斥鎖看作某種意義上的全域性變數。在同一時刻只能有乙個執行緒

掌握某個互斥上的鎖,擁有上鎖狀態的執行緒能夠對共享資源進行操作。若其他執行緒希望上鎖

乙個已經上鎖了的互斥鎖,則該執行緒就會掛起,直到上鎖的執行緒釋放掉互斥鎖為止。可以說,

這把互斥鎖使得共享資源按序在各個執行緒中操作。

互斥鎖的操作主要包括以下幾個步驟。

· 互斥鎖初始化:pthread_mutex_init

· 互斥鎖上鎖:pthread_mutex_lock

· 互斥鎖判斷上鎖:pthread_mutex_trylock

· 互斥鎖接鎖:pthread_mutex_unlock

· 消除互斥鎖:pthread_mutex_destroy

互斥鎖分為三種:1.快速互斥鎖 2.遞迴互斥鎖 3.檢錯互斥鎖。

其實看了書才知道這三種鎖的主要區別在於其他沒有占有互斥鎖的執行緒在希望得到互斥鎖是否需要阻塞等待。

快速鎖是在呼叫執行緒會阻塞到擁有互斥鎖的執行緒解鎖為止。

遞迴互斥鎖能夠成功的返回並且增加呼叫執行緒在互斥上加鎖的次數。

檢錯互斥鎖是非阻塞模式,直接返回並且返回乙個錯誤資訊。

執行緒控制 join執行緒

在我們做專案的時候時常會有這樣的一種需求 我們需要執行兩個方法,乙個方法要等另乙個方法執行完才能執行,這樣的狀況放到多執行緒中要怎麼實現呢?今天就來看看多執行緒中的join方法。我們的均方法通常是把乙個大問題分成許多小問題,每個小問題分配乙個執行緒,當所有的小問題都得到處理後,在呼叫主線程來進一步操...

執行緒 之 執行緒控制

下面有幾種方法可以很好的控制線程的執行。1.join 執行緒控制 2.後台執行緒 守護執行緒 3.sleep執行緒睡眠 4.yield執行緒讓步 1.join 執行緒控制。thread提供了讓乙個執行緒等待另外乙個執行緒完成的方法 join 方法 意思 當在a程式執行流 執行緒 中呼叫b執行緒的ji...

執行緒控制與執行緒分離

一 執行緒控制 1 執行緒概念 執行緒是資源排程的基本單位,執行緒是程序內部的乙個執行流,在程序的位址空間內執行。在linux 下沒有真正意義上的執行緒,執行緒是用程序模擬的,又被稱為輕量級程序。2 執行緒資源 乙個程式中的多個執行緒共享同一位址空間,因此 段,資料段內容是共享的。除此之外,以下內容...