Fw: [問題] bool變數一寫多讀需要鎖嗎

看板Linux作者 (SFGEX)時間3小時前 (2026/02/12 14:49), 20小時前編輯推噓0(000)
留言0則, 0人參與, 3小時前最新討論串1/1
※ [本文轉錄自 C_and_CPP 看板 #1fZ7vDfQ ] 作者: SFGEX (SFGEX) 看板: C_and_CPP 標題: [問題] bool 64bit機器上一寫多讀需要鎖嗎 時間: Wed Feb 11 21:04:11 2026 開發平台(Platform): (Ex: Win10, Linux, ...) Linux 64 位元指令集 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) gcc 問題(Question): bool型別之類的簡單變數 Single Store & Multiple Load本身有組合語言層級的原子性保證 請問~~ 所以有做好memory barrier的前提下 一寫多讀bool是不是完全不用鎖? 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) Writer thread: do_something(); smp_wmb(); global_flag = true; Multiple Reader threads: if (global_flag) { smp_rmb() do_other_things() } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.23.35 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1770815053.A.A5A.html ※ 編輯: SFGEX (114.27.23.35 臺灣), 02/11/2026 21:20:20

02/12 00:10, 18小時前 , 1F
我想請問一下,你是怎麼知道bool型別支援single write
02/12 00:10, 1F

02/12 00:10, 18小時前 , 2F
和 multiple load?
02/12 00:10, 2F

02/12 00:19, 17小時前 , 3F
02/12 00:19, 3F

02/12 00:19, 17小時前 , 4F
uage/memory_model.html
02/12 00:19, 4F

02/12 00:20, 17小時前 , 5F
這一段話:When an汢valuation漑f an expression writ
02/12 00:20, 5F

02/12 00:21, 17小時前 , 6F
When an汢valuation of an expression writes to a me
02/12 00:21, 6F

02/12 00:21, 17小時前 , 7F
and another evaluation reads or modifies the same
02/12 00:21, 7F

02/12 00:21, 17小時前 , 8F
memory location, the expressions are said to氲onf
02/12 00:21, 8F

02/12 00:25, 17小時前 , 9F
所以data race 是只要有一個 write 搭配其它 read 或w
02/12 00:25, 9F

02/12 00:25, 17小時前 , 10F
rite 就會是發生。
02/12 00:25, 10F

02/12 01:50, 16小時前 , 11F
另外, 就算 x86 組合語言只有一條, CPU 微指令可能有好幾條
02/12 01:50, 11F

02/12 07:19, 10小時前 , 12F
請問這題適合轉 Linux 板嗎?
02/12 07:19, 12F

02/12 14:40, 3小時前 , 13F
應該說我只知道賦值跟讀變數都只有一條組語
02/12 14:40, 13F

02/12 14:40, 3小時前 , 14F
但複雜操作例如++ , swap會有多條 一定不行
02/12 14:40, 14F

02/12 14:47, 3小時前 , 15F
然後store load 即使底下還有微指令
02/12 14:47, 15F

02/12 14:47, 3小時前 , 16F
讀寫這個快取上byte也是原子性的
02/12 14:47, 16F

02/12 14:47, 3小時前 , 17F
不會說store更新了4bit還有4bit沒更新
02/12 14:47, 17F

02/12 14:48, 3小時前 , 18F
其他cpu 或是同一個cpu load這塊快取要馬新要馬舊
02/12 14:48, 18F

02/12 14:49, 3小時前 , 19F
應該是整個8bit 全舊全新選一個而已?
02/12 14:49, 19F
※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: SFGEX (223.136.48.119 臺灣), 02/12/2026 14:49:33
文章代碼(AID): #1fZNV-z- (Linux)
文章代碼(AID): #1fZNV-z- (Linux)