看板 C_and_CPP 關於我們 聯絡資訊
我自己看過volatile會用在這幾個地方,可以參考一下 1. 大多數的Device都會在kernel space map一塊記憶體作為溝通之用 這塊100%是volatile,不然穩死 簡單說這塊記憶體內容根本不是自己控制的,所以每次查詢都需要去peek 2. 這情況雖然我不覺得需要volatile,但是很多人認為是需要的 就是threading的global部分(這是個多危險的東西啊 XD) 我總覺得這用法是從java來的,java會用volatile做某種程度的synchronized 我不知道C有沒有這種行為 3. shmat拿到的void*取值後最好要volatile,別鐵齒,雖然看起來是user space -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.160.23.216 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1410612806.A.BE1.html ※ 編輯: Killercat (118.160.23.216), 09/13/2014 21:07:53
Feis: threading 的部分, C 靠 volatile 做到 "一點點" 09/13 21:25
Feis: C++ 有自己一套玩法 09/13 21:25
firose: java volatile 可處理 reorder & coherence, C++ 沒有 09/13 22:08
windows2k: VC2005的volatile有Java volatile的語意,不過也只有VC 09/13 23:16
windows2k: 有這玩意,C11/C++11推的是atomic 09/13 23:17
windows2k: 不過這邊跟猿啼有點偏了..:p 09/13 23:17
windows2k: http://bit.ly/1pe0njw 有興趣的話參考看看 09/13 23:22
carylorrk: 基本上意識到內容不是自己的,就該考慮用 violatile 09/14 02:41
carylorrk: 不過這是最低限度,像是 threading 加不加無所謂是因爲 09/14 02:42
carylorrk: 很多時候都不夠用... 09/14 02:43
carylorrk: 不過基本上還是只有處理 hardware 的時候最常見 09/14 02:48
carylorrk: pthread lock 或是 atomic 纔能保證單一變數的語意,同 09/14 03:25
carylorrk: 時也包含了 volatile 的語意。而 1 和 3 在 Linux 上某 09/14 03:27
carylorrk: 種程度上來說是差不多的東西 XD 09/14 03:28
carylorrk: *保證單一變數的 sync 語義 09/14 03:28
saladim: 到了multiCore整個狀況又變難了 09/14 10:28
carylorrk: 發現昨天睡前整個語無倫次... 09/14 16:32