软件构造 并发2
交織競爭條件
在某時刻一個運行核心只有一個線程可以運行。?? 進程/線程采用OS提供的時間片特征來共享處理時間。
當線程數多于處理器數量時,并發性通過時間片來模擬,處理器切換處理不同的線程。
例子:時間片(其使用是不可預知的,非確定性的,意味著線程可能隨時暫?;蚧謴?#xff09;
?????????? 三個線程T1 T2 T3可能在具有兩個實際處理器的機器上進行時間分割,一個處理器運行線程T1,另一個運行線程T2,第二個處理器切換到運行線程T3.
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 線程T2只是暫停,直到下一個時間片在同一個處理器或另一個處理器上
????????? 共享內存銀行存儲實例:在Java中,采用happened-before機制,保證了語句A內存的寫 入對語句B是可見的,也就是在B開始讀數據之前,A已經完成了數據 的寫入。 確保內存一致性
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??每次運行包含競爭條件的程序時,都可能會得到不同 的行為。 ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 打印 調試操作很慢,通常慢100-1000倍,所有有時打印出來的并不是想要的該時間段的結果 ? ?????????????????????????????????????????????
??????????????????
?
轉載于:https://www.cnblogs.com/xgl122/p/9195342.html
總結
- 上一篇: 如果公司申请破产,欠的债怎么办
- 下一篇: 买车用招行信用卡需要啥条件 五大要求看看