互斥(mutex)和訊號量(semaphore)的區別

互斥與訊號量...

互斥(mutex)和訊號量(semaphore)的區別

互斥與訊號量

互斥鎖類似於房間的一把鑰匙。一個人拿著鑰匙,就像一根線,是唯一能進入房間的人。有許可權的人必須把鑰匙交給下一個排隊的人。因此,只有獲取互斥鎖的執行緒才能釋放互斥鎖。

互斥鎖通常用於序列化對可重入程式碼“一種不能由多個執行緒同時執行的程式碼”的一部分的訪問。一節中只允許有一個執行緒。這將強制佇列中的其他執行緒等待。線上程獲得訪問權之前,它必須等到執行緒放棄該節。

在mutex中使用相同的類比,訊號量是可以使用相似鎖訪問相同數量房間的相似鑰匙的數量。訊號量或訊號量計數的值將取決於進出房間的人數(執行緒)。如果有5個房間都被佔用,那麼訊號量計數為零。如果有兩個人離開房間,那麼計數是兩個,這兩把鑰匙將交給佇列中的下兩個人。

也就是說,訊號量可以由任何執行緒或程序同時發出訊號,非常適合需要同步的應用程式。然而,基於最大訊號量計數,訊號量被用來有效地限制公共資源的併發使用者數。

所以基本上,互斥可以被看作是一個值為1的訊號量。

訊號量的減少和增加取決於執行緒是請求訪問公共資源還是離開節。

理論上,互斥和(二進位制)訊號量在語義上是相似的,互斥的實現可以用訊號量來完成,反之亦然。然而,在實際意義上,它們可能有些不同。

互斥僅用於互斥,二進位制訊號量用於互斥和事件通知。儘管它們在實現和一般語義方面非常相似,但它們的用法卻不同。

總結:

1.Mutex通常用於序列化對公共資源的訪問,而訊號量是多個併發訪問。

互斥量就像一個計數為1的訊號量。Mutex只允許單個執行緒訪問,而訊號量可以由任何執行緒或程序併發發出訊號。

4.訊號量是同步的理想選擇,通常用於事件通知和互斥,而互斥僅用於互斥。

  • 發表於 2021-06-23 04:03
  • 閱讀 ( 41 )
  • 分類:語言

你可能感興趣的文章

離子移變的(ionotropic)和代謝性受體(metabotropic receptors)的區別

...性受體(metabotropic receptors) 離子型和代謝型受體是膜轉運和訊號轉導的兩類受體。離子型受體結合離子配體,如K+、Na+、Cl-、Ca2+。代謝型受體與非離子配體結合,如化學受體或G蛋白偶聯受體。結合後,這些受體啟動級聯反應,如...

  • 發佈於 2020-10-14 10:00
  • 閲讀 ( 96 )

正規化(paradigm)和組合(syntagm)的區別

...麼是範例(a paradigm)? 正規化是在特定的句法角色中產生互斥選擇的一組語言專案。範例關係包括可以互相替代的符號。這種替換通常會改變意思。在聚合關係中,一個詞項通常可以被同一類別的另一個詞項代替。例如,名詞用...

  • 發佈於 2020-10-24 22:28
  • 閲讀 ( 63 )

psa:預設情況下,電報聊天不是端到端加密的

電報和訊號是廣泛流行的隱私資訊應用。然而,這兩個應用程式有一些很大的區別:雖然所有透過訊號傳送的訊息在預設情況下都是端到端加密的,但電報訊息不是。端到端加密是電報中的一個可選功能。 為什麼端到端加密...

  • 發佈於 2021-03-31 17:49
  • 閲讀 ( 47 )

如何在linux上安裝signal桌面

...和註冊到您的訊號帳戶。 設計隱私 訊號由訊號基金會和訊號信使有限公司釋出。這兩個非盈利組織總部設在加利福尼亞山景,由馬修·羅森菲爾德(又名“莫西·馬林斯皮克”)和布萊恩·阿克頓創立。他們一起繼續工作,開...

  • 發佈於 2021-03-31 18:09
  • 閲讀 ( 48 )

沃達豐首次推出助推器布羅利原型傘內建太陽能電池和訊號助推器

今天沃達豐推出了Booster Brolly,這是一款原型雨傘,使用整合太陽能電池和微型天線為智慧**充電,增強3G訊號。這款概念傘是與倫敦大學學院合作開發的,它利用12塊矽太陽能電池縫合在傘蓋上,提供足夠的能量為內建的訊號助...

  • 發佈於 2021-04-22 18:41
  • 閲讀 ( 37 )

divx公司(divx)和阿維(avi)的區別

...,而AVI負責如何儲存資料以及其他相關資訊4.DivX和AVI不是互斥的,也不是互斥的。DivX影片可能在另一個容器中,AVI檔案可能有一個未在DivX中編碼的影片 

  • 發佈於 2021-06-22 12:38
  • 閲讀 ( 41 )

互斥(mutex)和訊號量(semaphore)的區別

互斥與訊號量 互斥鎖類似於房間的一把鑰匙。一個人拿著鑰匙,就像一根線,是唯一能進入房間的人。有許可權的人必須把鑰匙交給下一個排隊的人。因此,只有獲取互斥鎖的執行緒才能釋放互斥鎖。 互斥鎖通常用於序列化...

  • 發佈於 2021-06-23 04:03
  • 閲讀 ( 41 )

互斥(mutex)和事件(event)的區別

互斥與事件 在C#中,有許多不同的執行緒同步選項。兩個更廣泛使用的是互斥和事件。這兩者到底有什麼區別?哪一個是更好的選擇? event選項可以給執行緒一個選項,讓它阻塞直到一個事件被廣播為止,因此被稱為“event”...

  • 發佈於 2021-06-23 17:48
  • 閲讀 ( 41 )

春夏8(ss8)和訊號系統(signaling system)的區別

SS8 vs訊號系統 SS7或信令系統7是PSTN網路中用於呼叫設定、呼叫控制、中斷和傳遞網路狀態的標準協議。它用於監視每個呼叫並從呼叫的開始到結束準備報告。該報告稱為Call Detail Record。呼叫建立、管理和斷開連線所需的資訊儲...

  • 發佈於 2021-06-23 20:05
  • 閲讀 ( 28 )

處置(dispose)和定稿(finalize)的區別

...可加快非託管資源(如資料庫控制代碼、檔案控制代碼、訊號量和作業系統分配的其他物件)的釋放。dispose方法被呼叫來執行清除未使用的記憶體和稀缺資源(如GDI控制代碼)所需的程式碼。簡單地說,dispose方法提供了顯式記...

  • 發佈於 2021-06-25 14:55
  • 閲讀 ( 40 )