在沒有任何執行緒會讀的前提下,數條執行緒不加鎖地使勁寫同一片記憶體是否安全

時間 2021-05-30 11:27:46

1樓:Xi Yang

謝 @KE meng邀。

1.這樣做會不會導致任何錯誤?如果你只是往特定乙個地方瘋狂地寫,而不在乎寫的具體是什麼,那麼別的地方當然不會出錯誤,只是不一定能保證寫在上面的是什麼。

只有當你使用寫的結果進行下一步操作,才有機會出錯誤。

對於實際情況,這是依賴於處理器的。我聽說常見的x86、x86-64對於暫存器尺寸的變數的讀寫是原子的,所以對於這種情況,一般常見的PC依然不會出錯誤。

另外,CPU對於資料的讀寫是無所謂型別的,只有位址與尺寸。型別存在於對資料的操作時。比如你讀了4位元組的資料,然後後面進行了浮點操作,那它的「型別」就是浮點數。

2.這樣做會不會在CPU上,或者記憶體匯流排上產生對並行化不利的後果?會。

原子操作有代價,比如將狀態改變通知到所有其它的CPU核。對於往乙個地方寫這種,要保證原子性,肯定要排成隊變成穿行地乙個個寫。實際上,一切併發通訊、同步操作都會產生代價,只是多少不一樣。

最理想的併發計算,肯定是所有的資料都處於區域性,一切任務都在最開始時分發,在全部結束後歸併,中間沒有任何同步、互動等等。當然,通常沒有這種好事。

2樓:Cerror

題主的假定其實是想說完全不在意結果是否錯誤吧。如果是這樣的話,那麼對於int來說:

1. 不會導致錯誤

2. 不會有不利的後果

因為「鎖」的抽象層次比較高,它只是保證了邏輯正確性,而對底層硬體來說,有它沒它不影響。

在毫無任何格鬥遊戲經驗的前提下,鐵拳和街霸哪個更容易入門?

kite 剛剛在街機廳玩鐵拳6被bot打吐了,我以前在街機廳玩過幾年街霸4,最近也用鍵盤玩街霸5 玩慣街霸感覺鐵拳的操作真特麼不懂啊 文風 格鬥遊戲要看天分和環境。我從九二年開始玩街霸,99年左右在本地無敵,後來街機廳關閉了,我在電腦上打模擬器,鍵盤用得比搖桿還熟練。2014年左右開始網戰,直到現在...

如何看待潮陽實驗學校在沒有風扇的前提下,宿舍還不開空調降溫?

原諒我這一生不羈放縱愛自由,也會怕有一天會跌倒。背棄了理想,誰人都可以,哪會怕有一天只你共我。Hegel告訴我們,人類從歷史中獲得的唯一教訓,就是人類沒有從歷史中獲得教訓。去年四月的 空調革命 猶歷歷在目,距離春節的突然返校才過去多久,請問今年學校又給我們整了什麼好活?過去三年多是學校環境惡化而學費...

在沒有家用充電樁的前提下買Model 3合適嗎?

買電車我是不知道都怎麼想的,自己城市跑跑也就算了,你如果要開出去,出發前好好算一下電量,距離,還要把開空調,天冷各種因素考慮進去,沒算好的話,直接拋在路上,路過的車想給你接油都沒法接。我聽到過很多吹逼電車能續航500 600KM的,哪兒哪兒都能去,結果要麼就是沒到服務區沒電了,要麼就是到了服務區沒電...