国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

java - 關(guān)于i++的一個(gè)題目
phpcn_u1582
phpcn_u1582 2017-05-17 10:00:27
[Java討論組]

使用2條線程對(duì)i=1進(jìn)行自增(i++),每條線程各自執(zhí)行100次,請(qǐng)問(wèn)可能的最大值和最小值是多少?請(qǐng)給出解釋

另外問(wèn)問(wèn),++i是否是原子性的?

phpcn_u1582
phpcn_u1582

全部回復(fù)(2)
PHP中文網(wǎng)

最小可以是 3,即 +2,最大 201,即 +200 。。。。為什么 i 不從 0 開(kāi)始。。。

一次循環(huán)過(guò)程是:

  1. 從內(nèi)存讀取數(shù)據(jù)到寄存器

  2. 寄存器值++

  3. 寫(xiě)回?cái)?shù)據(jù)到內(nèi)存

一個(gè)線程可能在這三步中的任意一步被打斷。是3的情況是:
第一線程讀取數(shù)據(jù)1,然后被掛起,寄存器的值被保存到另一個(gè)地方。
第二個(gè)線程,持續(xù)執(zhí)行了 99 次(此時(shí),內(nèi)存中的值為 100),然后被掛起。
第一個(gè)線程被喚醒,恢復(fù)寄存器的 1 +1 之后 (=2)被寫(xiě)回內(nèi)存,該線程被掛起
第二個(gè)線程從內(nèi)存讀取2到寄存器之后被掛起
第一個(gè)全部執(zhí)行完,把值寫(xiě)回內(nèi)存
喚起第二個(gè)線程,恢復(fù)寄存器中的2,完成最后一次循環(huán)+1 之后寫(xiě)回 3

所以最終結(jié)果是 3。。。。

還沒(méi)有想到更小的調(diào)度方式。。。

最大值就不用過(guò)多解釋了。。。。

PHP中文網(wǎng)

最小值為2,最大值為200。
2就是兩個(gè)線程都在CPU緩存修改數(shù)據(jù),最終內(nèi)存只刷新了一次
200 就是兩個(gè)線程交替讀取并修改,互相不競(jìng)爭(zhēng)。
都問(wèn)最大值最小值了,自然不是原子性的。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)