互斥是指某一資源同時只允許乙個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。
同步是指在互斥的基礎上(大多數情況),通過其它機制實現訪問者對資源的有序訪問。
同步其實已經實現了互斥,所以同步是一種更為複雜的互斥。
互斥是一種特殊的同步。
所謂互斥,就是不同執行緒通過競爭進入臨界區(共享的資料和硬體資源),為了防止訪問衝突,在有限的時間內只允許其中之一獨占性的使用共享資源。如不允許同時寫
同步關係則是多個執行緒彼此合作,通過一定的邏輯關係來共同完成乙個任務。一般來說,同步關係中往往包含互斥,同時對臨界區的資源會按照某種邏輯順序進行訪問。如先生產後使用
總的來說,兩者的區別就是:
互斥是通過競爭對資源的獨佔使用,彼此之間不需要知道對方的存在,執行順序是乙個亂序。
同步是協調多個相互關聯執行緒合作完成任務,彼此之間知道對方存在,執行順序往往是有序的。
lock與unlock方法,替換synchronized,這就是互斥鎖的體現。消費者生產者模式就是同步鎖的體現。
執行緒同步和互斥的區別
互斥是指某一資源同時只允許乙個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。同步是指在互斥的基礎上 大多數情況 通過其它機制實現訪問者對資源的有序訪問。同步其實已經實現了互斥,所以同步是一種更為複雜的互斥。互斥是一種特殊的同步。所謂互斥,就是不同執行緒...
linux中線程同步和互斥的區別
相交程序之間的關係主要有兩種,同步與互斥。所謂互斥,是指散步在不同程序之間的若干程式片斷,當某個程序執行其中乙個程式片段時,其它程序就不能執行它 們之中的任一程式片段,只能等到該程序執行完這個程式片段後才可以執行。所謂同步,是指散步在不同程序之間的若干程式片斷,它們的執行必須嚴格按照規定的某種先後次...
linux中線程同步和互斥的區別
相交程序之間的關係主要有兩種,同步與互斥。所謂互斥,是指散步在不同程序之間的若干程式片斷,當某個程序執行其中乙個程式片段時,其它程序就不能執行它 們之中的任一程式片段,只能等到該程序執行完這個程式片段後才可以執行。所謂同步,是指散步在不同程序之間的若干程式片斷,它們的執行必須嚴格按照規定的 某種先後...