C_and_CPP 板


LINE

一直對volatile沒有很明確知道用途 查一些資料 多半都是舉例用volatile讓compiler不會對他最佳化 讓他不要拿cache數值 但這實在有點抽象, 實際上如果要使用 有沒有更具體一點的使用情境呢? 之前有聽到一個說法 想請問各位是否有錯 假設有個global變數 int a; 兩條thread都會去r/w這個a 假設我能確定這兩個thread執行的時候完全是互斥(我沒有用任何sync手段) 如 int a; int main(){ a = 1; std::thread t([](){cout<<a<<endl;}; } 乍看這兩條thread絕對無overlap 但我是不是也不能保證取得的a 值是正確的? 如果不能保證 是不是volatile int a;就能解這個問題? 另外就是如果我用mutex來手動讓它互斥, 為什麼就能保證取得的值正確呢? 如果我土炮寫一個 spin lock來做互斥(沒有使用系統提供任何API單純while spin) 是不是也可能沒辦法保證能解決"取得正確的值"這件事(非要使用系統的api才能?) 如果以上觀念大致正確, 是不是之後看到有人寫code 沒有用mutex or atomic 而是說 這兩條thread不會同時執行, 這講法本身就是有破綻的"嗎 以上是我的盲點, 請各位給一點關鍵字讓我可以去搜尋一下 建立一下觀念 或是給予一些指證 謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.218.202.250
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1505753032.A.DF7.html ※ 編輯: dreamboat66 (180.218.202.250), 09/19/2017 00:52:58
1F:推 super6602: volitile跟mutex應該沒關係吧 volitile是強迫一定要對 09/19 01:06
2F:→ super6602: 該mem操作 否則在a=1;while(a)時 complier就認定恆為t 09/19 01:06
3F:→ super6602: rue就優化掉了 09/19 01:06
4F:推 steve1012: 你要不要說一下你怎麼用 mutex? 09/19 02:16
5F:推 sorryla: volatile是用在如果該記憶體可能被外部更改(硬體 etc), 09/19 06:41
6F:→ sorryla: 我們必須確定我們取到的是確實的值,而非可能被優化的值 09/19 06:41
7F:→ sorryla: 。 09/19 06:41
8F:推 littleshan: 因為標準語焉不詳,volatile並不保證thread safety 09/19 10:47
9F:→ littleshan: 請見 https://goo.gl/GGRAqd 09/19 10:47
10F:推 james732: volatile跟atomic應該是兩回事? 09/19 12:01
11F:推 Raymond0710: volatile mutex atomic 是不同的意思 09/19 12:03
12F:推 chuegou: 一個是讓cpu裡的運算暫存跟記憶體同步 09/19 12:06
13F:→ chuegou: 一個是讓記憶體裡的資料在某段不要被其他執行緒改到 09/19 12:06
14F:→ nsc: https://blog.regehr.org/archives/28 09/19 12:37
15F:推 jasonkey123: volitile在mcu下用的比較多 09/23 22:49







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP