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

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

這個結果該如何分析呢?有兩個剩余票數為2

窗口1賣了1張火車票,還剩票數:2?

窗口1賣了1張火車票,還剩票數:1?

窗口1賣了1張火車票,還剩票數:0?

窗口3賣了1張火車票,還剩票數:2?

窗口2賣了1張火車票,還剩票數:3?


?這個結果該如何分析呢?有兩個剩余票數為2

正在回答

4 回答

這都是線程不安全導致的

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

視頻中 ticketsCont-- 是一個復合操作在多線程下可能交叉運行,內存可見性問題,可以學習這節課程?http://www.xianlaiwan.cn/learn/352

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

我也出現這種問題了?

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

課程中的代碼本身就沒有考慮線程安全問題,解決這個問題請搜索“線程安全”,以下內容是解釋你的程序運行結果(可能過程,因為多線程過程很復雜):

窗口3獲得運行機會,判斷此時剩余5張可以賣票,但此時被窗口2搶去了運行機會,窗口3減減得到4張余票,但是窗口1又搶得了機會,減減得到3張余票,此時3繼續運行,打印出余票3,窗口1和窗口2都打印了余票2,接下來的執行就和課程的差不多了。

這里如果考慮到原子操作,就不會出現你的這種問題,而你的這種問題出現的幾率很小,因為程序運行很快,分配的一點點時間片在此案例中的一個線程很容易就能執行完,就算執行不完,出現以上問題的概率也小。

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

舉報

0/150
提交
取消

這個結果該如何分析呢?有兩個剩余票數為2

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

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

幫助反饋 APP下載

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

公眾號

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