亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

同一時刻只能有一條線程在CPU上執行?

1.我們所學習多線程不就是為了讓多條線程并發在服務器上執行,加快處理某些業務的等待時間嗎,可章節4-2中3:06說的觀點怎么感覺不對勁呢。

2.再提一個問題,多線程執行的過程中,每一條線程執行的速度效率都不一致才是導致數據被破壞的原因吧

http://img1.sycdn.imooc.com//5a97ad1d00016c2715220819.jpg

正在回答

2 回答

第一個問題:并發時的時刻其實指的是某個很短的時間,當系統只有一個內核時,系統在某個時刻確實只能執行一個線程,大多數系統都用的是時間片輪換算法,就是多個進程在分配到的極短時間片輪流使用CPU,詳情可以看看計算機操作系統這類書,都有具體介紹

第二個問題,按照我的理解是這樣的,用這個舉例吧

?http://img1.sycdn.imooc.com//5a97b5c5000185c005580327.jpg



正確執行時:

線程1:c=5000,a=5000;a=a+500=5500;c=a

線程2: c=5500;c=c+900=6400,結果是6400

爭用時:

線程1:c=5000,a=5000;a=a+500=5500;

線程2:c=5000;c=c+900=5900;

線程1:c=a,結果是5500

線程2與線程1爭用資源,導致c損失900;


2 回復 有任何疑惑可以回復我~
#1

qq_陪Alice度過漫長歲月 提問者

萬分感謝!看你的回答按照你的思路再走一遍就通了。 這里的意思就是當 線程A沒有執行完畢,線程B就load共享對象了 如果線程B執行速度稍快,那么線程B執行完后,A才走到將改變值寫會當前變量的時候 那么共享變量這時候的兩個操作,最終值就和業務對不上了 剛剛饒進去了,贊一個!
2018-03-01 回復 有任何疑惑可以回復我~

沒有看懂

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

同一時刻只能有一條線程在CPU上執行?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號