程序 執行緒間同步機制。

2021-06-19 13:16:04 字數 1036 閱讀 9367

一、程序/執行緒間同步機制。 

臨界區、互斥區、事件、訊號量四種方式 臨界區(critical section)、互斥量(mutex)、訊號量(semaphore)、事件(event)的區別 

1、臨界區:通過對多執行緒的序列化來訪問公共資源或一段**,速度快,適合控制資料訪問。在任意時刻只允許乙個執行緒對共享資源進行訪問,如果有多個執行緒試圖訪問公共資源,那麼在有乙個執行緒進入後,其他試圖訪問公共資源的執行緒將被掛起,並一直等到進入臨界區的執行緒離開,臨界區在被釋放後,其他執行緒才可以搶占。

2、互斥量:採用互斥物件機制。 只有擁有互斥物件的執行緒才有訪問公共資源的許可權,因為互斥物件只有乙個,所以能保證公共資源不會同時被多個執行緒訪問。互斥不僅能實現同一應用程式的公共資源安全共享,還能實現不同應用程式的公共資源安全共享 .互斥量比臨界區複雜。因為使用互斥不僅僅能夠在同一應用程式不同執行緒中實現資源的安全共享,而且可以在不同應用程式的執行緒之間實現對資源的安全共享。 

3、訊號量:它允許多個執行緒在同一時刻訪問同一資源,但是需要限制在同一時刻訪問此資源的最大執行緒數目 .訊號量物件對執行緒的同步方式與前面幾種方法不同,訊號允許多個執行緒同時使用共享資源,這與作業系統中的pv操作相同。它指出了同時訪問共享資源的執行緒最大數目。它允許多個執行緒在同一時刻訪問同一資源,但是需要限制在同一時刻訪問此資源的最大執行緒數目。

pv操作及訊號量的概念都是由荷蘭科學家e.w.dijkstra提出的。訊號量s是乙個整數,s大於等於零時代表可供併發程序使用的資源實體數,但s小於零時則表示正在等待使用共享資源的程序數。    p操作申請資源:   (1)s減1;   

(2)若s減1後仍大於等於零,則程序繼續執行;   

(3)若s減1後小於零,則該程序被阻塞後進入與該訊號相對應的佇列中,然後轉入程序排程。      

v操作 釋放資源:   

(1)s加1;   

(2)若相加結果大於零,則程序繼續執行;   

(3)若相加結果小於等於零,則從該訊號的等待佇列中喚醒乙個等待程序,然後再返回原程序繼續執行或轉入程序排程。 

4、事 件: 通過通知操作的方式來保持執行緒的同步,還可以方便實現對多個執行緒的優先順序比較的操作 

程序 執行緒同步機制

程序執行緒之間的通訊共享資料在現實的應用中可以說是不可避免的,那麼如何保證他們之間在使用同乙個資料的時候能夠有序,不出問題,這個就是同步機制要解決的問題,老師經常說程式設計到最後有很多哲學的問題,仔細想來也確實可以這麼說,哈哈,其實哲學就是事物的道理嗎,我們都多多少少是跟哲學沾邊的。同步的機制主要有...

執行緒間同步機制 互斥鎖

互斥以排他方式防止共享資料被併發修改。互斥量從本質來說是一把鎖,是乙個二元變數,其狀態為開鎖 允許0 和上鎖 禁止1 在訪問共享資源前對互斥量進行設定 加鎖 在訪問完成後釋放 解鎖 互斥量。1 在訪問該資源前,首先申請該互斥鎖,如果該互斥鎖處於開鎖狀態,則申請到該鎖物件,並立即占有該鎖 使該鎖處於鎖...

執行緒間同步機制的總結

多執行緒共享同乙個程序的位址空間 優點 執行緒間較容易實現通訊,通過全域性變數實現資料共享和交換,缺點 多個執行緒同時訪問共享資源容易出現資源競爭,所以要引入同步和互斥機制。執行緒間同步 無名訊號量,互斥鎖,事件,臨界區 後兩個用的較少 無名訊號量 實現同步的機制步驟 1 定義全域性變數sem t ...