1. 程式人生 > >線程同步和互斥的區別

線程同步和互斥的區別

之間 方法 無法 spa lock zed 模式 col 一定的

  1. 互斥是指某一資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。
  2. 同步是指在互斥的基礎上(大多數情況),通過其它機制實現訪問者對資源的有序訪問。
  3. 同步其實已經實現了互斥,所以同步是一種更為復雜的互斥。
  4. 互斥是一種特殊的同步。

所謂互斥,就是不同線程通過競爭進入臨界區(共享的數據和硬件資源),為了防止訪問沖突,在有限的時間內只允許其中之一獨占性的使用共享資源。如不允許同時寫

同步關系則是多個線程彼此合作,通過一定的邏輯關系來共同完成一個任務。一般來說,同步關系中往往包含互斥,同時對臨界區的資源會按照某種邏輯順序進行訪問。如先生產後使用

總的來說,兩者的區別就是:
互斥是通過競爭對資源的獨占使用,彼此之間不需要知道對方的存在,執行順序是一個亂序。
同步是協調多個相互關聯線程合作完成任務,彼此之間知道對方存在,執行順序往往是有序的。
lock與unlock方法,替換synchronized,這就是互斥鎖的體現。消費者生產者模式就是同步鎖的體現。

線程同步和互斥的區別