【操作系統】線程間實現同步的方式

同步與互斥的區別與聯繫

  • 互斥:是指散佈在不同進程(線程)之間的若干程序片斷,當某個進程(線程)運行其中一個程序片段時,其它進程(線程)就不能運行它們之中的任一程序片段,只能等到該進程(線程)運行完這個程序片段後纔可以運行。

  • 同步:是指散佈在不同進程(線程)之間的若干程序片斷,它們的運行必須嚴格按照規定的 某種先後次序來運行,這種先後次序依賴於要完成的特定的任務。

同步是一種更爲複雜的互斥,而互斥是一種特殊的同步。也就是說互斥是兩個線程之間不可以同時運行,他們會相互排斥,必須等待一個線程運行完畢,另一個才能運行,而同步大部分情況下也是不能同時運行,但他是必須要安照某種次序來運行相應的線程,而且少數時候同步可以允許多個線程同時運行! 

線程同步的方式

線程間同步的方式主要由以下三種:

  • 互斥量:採用互斥對象機制,只有擁有互斥對象的線程纔有訪問公共資源的權限。因爲互斥對象只有一個,所以可以保證公共資源不會被多個線程同時訪問。

  • 信號量:它允許同一時刻多個線程訪問同一資源,但是需要控制同一時刻訪問此資源的最大線程數量。當需要一個計數器來限制可以使用某共享資源的線程數目時,可以使用“信號量”對象。

  • 事件(信號):通過通知操作的方式來保持多線程同步,還可以方便的實現多線程優先級的比較操作。即事件機制允許一個線程在處理完一個任務後,主動喚醒另外一個線程執行任務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章