PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
Re: [問題] volatile的正確用法
作者:
Killercat
(殺人貓™)
2014-09-13 20:53:23
我自己看過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
作者:
Feis
(永遠睡不著 @@)
2014-09-13 21:25:00
threading 的部分, C 靠 volatile 做到 "一點點"C++ 有自己一套玩法
作者: firose (guest也是也是也是也是也)
2014-09-13 22:08:00
java volatile 可處理 reorder & coherence, C++ 沒有
作者:
windows2k
(程式宅 <囧>)
2014-09-13 23:16:00
VC2005的volatile有Java volatile的語意,不過也只有VC有這玩意,C11/C++11推的是atomic不過這邊跟猿啼有點偏了..:p
http://bit.ly/1pe0njw
有興趣的話參考看看
作者:
carylorrk
(carylorrk)
2014-09-14 02:41:00
基本上意識到內容不是自己的,就該考慮用 violatile不過這是最低限度,像是 threading 加不加無所謂是因爲很多時候都不夠用...不過基本上還是只有處理 hardware 的時候最常見pthread lock 或是 atomic 纔能保證單一變數的語意,同時也包含了 volatile 的語意。而 1 和 3 在 Linux 上某種程度上來說是差不多的東西 XD*保證單一變數的 sync 語義
作者:
saladim
(殺拉頂)
2014-09-14 10:28:00
到了multiCore整個狀況又變難了
作者:
carylorrk
(carylorrk)
2014-09-14 16:32:00
發現昨天睡前整個語無倫次...
繼續閱讀
Re: [問題] volatile的正確用法
Feis
[討論] 整數轉成字元小問題
longted3
[問題] volatile的正確用法
windows2k
[問題] Visual C++ 2010的問題
mori9455
[問題] Dev C++編碼錯誤訊息
filexchang
[分享] JetBrains CLion公開測試
Killercat
[問題] sin/cos 數學公式
makuebx
[問題] 讀取檔案搜尋字串輸出另一字串
justakid18
[問題] include 尋找路徑
a76126
[問題] C++Primer 4/e r中文版
hashbrown
Links
booklink
Contact Us: admin [ a t ] ucptt.com