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