1. 程式人生 > >軟件構造 並發2

軟件構造 並發2

OS 很慢 不同 語句 時間 行存儲 有時 線程數 機器

交織競爭條件
在某時刻一個運行核心只有一個線程可以運行。 進程/線程采用OS提供的時間片特征來共享處理時間。
當線程數多於處理器數量時,並發性通過時間片來模擬,處理器切換處理不同的線程。
例子:時間片(其使用是不可預知的,非確定性的,意味著線程可能隨時暫停或恢復)
三個線程T1 T2 T3可能在具有兩個實際處理器的機器上進行時間分割,一個處理器運行線程T1,另一個運行線程T2,第二個處理器切換到運行線程T3.
線程T2只是暫停,直到下一個時間片在同一個處理器或另一個處理器上
共享內存銀行存儲實例:在Java中,采用happened-before機制,保證了語句A內存的寫 入對語句B是可見的,也就是在B開始讀數據之前,A已經完成了數據 的寫入。 確保內存一致性
每次運行包含競爭條件的程序時,都可能會得到不同 的行為。

打印 調試操作很慢,通常慢100-1000倍,所有有時打印出來的並不是想要的該時間段的結果

軟件構造 並發2