請從底層說說為什麼 a b 同義於 a a b

時間 2021-05-07 01:19:13

1樓:梁濤

0. 給a加上volatile修飾符試試;

1. 在第0點的基礎上,開啟優化試試;

2. 切換成多執行緒版本,重複0和1步試試。

謹供參考。

2樓:pansz

問題不成立,這兩者的含義是不同的。

a+=b 的操作的實際含義是對 a 執行增量操作,如果乙個 CPU 支援這樣的操作,那麼這個操作直接針對 a 進行,不涉及到對 a 的取值,在取出 b 的值之後,剩下的操作可以是原子操作,從這條語句的含義上將是這樣。當然,在具體情況中,a += b 也常常不是原子操作,因為很少有硬體能直接實現它。

a = a + b 涉及到一次對 a 的取值和一次對 a 的賦值,而在對 a 的賦值之前 a 的值可能發生改變,而這個賦值行為有可能讓這個改變失效。出現問題的原因在於 a = a + b 肯定不是原子操作。

總結一下就是:對於某個特定的硬體,a+=b 對變數 a 而言有可能是原子操作,有可能不是原子操作。但是 a = a+b 無論對於什麼硬體而言,它都一定不是原子操作。

假想以下兩個執行緒,乙個執行 a+=1, 另外乙個執行 a+=2,理論上,無論這兩個執行緒之間的排程如何,如果是原子操作,最終結果 a 一定加 3 了。

但如果乙個執行 a=a+1, 另外乙個執行 a=a+2,視線程之間的排程不同情況,最終結果這個 a 可能被加了 1, 2, 3 都有可能。

來說說為什麼執著於遊戲?

李峰邏Antemp 好的遊戲描述乙個好的故事,玩家在遊玩的同時會獲得乙個完整的情感體驗,另外配樂和畫面也是加分點。執著於遊戲可能也是因為遊戲給我帶來的,與其他藝術形式不一樣的體驗吧,也許是代入感較強? Lian 遊戲讓自己變得更好 以前打副本都是乙個人要求組隊也單刷的那種後來因為遊戲才發現其實合作更...

請各位已婚人士說說 為什麼要結婚?

阿蠻 但是我發現,婚後的婦女,不能只用乙個慘字形容,而且對方也完全不能給你預想中的日子。姑娘,你的樣本資料有問題,要麼數量不夠大,要麼範圍不夠廣 淺淺 婚後有婚後的幸福,期望不要太高,但也不要悲觀,單身有單身的好,也有單身的煩惱,到什麼時候就應該考慮什麼樣的事情,我覺得結婚挺好的,婚後有讓我覺得踏實...

說說你為什麼怕蜘蛛?以及請懂的科普一下如何趕走(不是殺害)蜘蛛!拒絕放圖!!!!

Somirousseauss 我有zhizhu恐懼症,導致我連中文都不能打出來,不然會渾身難受。原因是小時候被乙隻大zhizhu爬過身上,當時覺得有點癢,然後扒開衣服一看,我的個媽呀,有乙隻大zz,我嚇得魂飛魄散,感謝我爹立刻給我掏了出來,但是留下了後遺症,導致我從小就不能跟zz共處一室!但凡我家裡...