執行緒同步機制《三》

2021-09-01 15:08:40 字數 973 閱讀 5637

《三》執行緒同步機制分析

當多個執行緒同時啟動時,且這多個執行緒對同一資源進行操作時,會發生紊亂的現象。

例項:**如下:

建立乙個執行緒1

public class thread1 extends thread

public void run() catch (exception e) }}}

建立乙個執行緒2

public class thread2 extends thread

public void run() catch (exception e) }}}

乙個共同的操作物件

public class worker 

/*** 加的方法

*/public void add()

/*** 減的方法

*/public void dec()

/*** 列印

*/public void pin()

}

主函式,同時啟動兩個執行緒

public class mains 

}

執行的結果如下;

在結果中可以看到,x,y的值是在不斷變化的,但是怎麼變化,是不是就是自己預計的一樣?

顯然出乎了我們的意料,因為有時是thread1在執行,有時是thread2在執行,到底是誰該下一刻執行,我們根本無法知道,由此對x,y的操作就發生了紊亂。

分析:執行緒的啟動是有先後次序的,因為當執行緒處於就緒狀態時,執行緒有機器時間軸排隊。當前面的乙個執行緒啟動後,第2個執行緒可能在就緒、可能馬上啟動。也就是當執行緒對x,y操作了,可能執行緒2並不是接著對x,y操作,而是執行緒1繼續操作,或者兩者一起都在操作,或者後面還會繼續操作。。。。

這樣我們就不知道誰在運算元據,可能是按先後,可能是同時,這種混亂的現象將直接導致我們無法對資料的處理進行的合理法。

執行緒同步機制

本週主要學習 執行緒同步機制 互斥量 讀寫鎖和條件變數 和簡單程式的實現,對執行緒同步有了進一步認識 內容如下 執行緒的基本概念,相關函式 互斥量 說明 處於標圓形框之上的線段表示相關的執行緒沒有擁有互斥量 處於圓形框中心線之上的線段表示相關的執行緒等待互斥量 處於圓形框中心線之下的線段表示相關的執...

執行緒同步機制

執行緒同步主要用於協調對臨界資源的訪問,臨界資源可以是硬體裝置 比如印表機 磁碟 檔案 記憶體 變數 陣列 佇列等 執行緒同步有4種機制 他們的主要區別在於 各同步機制詳細的功能說明如下 臨界區臨界區是一段獨佔對某些共享資源訪問的 在任意時刻只允許乙個執行緒對共享資源進行訪問。如果有多個執行緒試圖同...

執行緒同步機制

執行緒同步的四種機制 主要區別在於 適用範圍 臨界區在使用者模式下,不會發生使用者態到核心態的切換,只能用於同程序內線程間同步。其他會導致使用者態到核心態的切換,利用核心物件實現,可用於不同程序間的執行緒同步。效能 臨界區效能較好,一般只需要數個cpu週期。其他機制效能相對較差,一般需要數十個cpu...