[問題] Shared Memory - volatile

看板C_and_CPP作者時間11年前 (2012/09/15 23:02), 編輯推噓3(307)
留言10則, 6人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 兩個 Process 透為 Shared Memory 溝通時, 為了確定 Process 每一次都會去 Memory 抓最新的資料, 是否需要在 Shared Memory 中的 Data Structure 前面加上 volatile 關鍵字 以確保不會被 Compiler 的最佳化所影響。 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.184.128

09/15 23:03, , 1F
你測了不就知道?
09/15 23:03, 1F

09/15 23:14, , 2F
你這個問題需要考慮的是避免同時讀寫的問題
09/15 23:14, 2F

09/15 23:21, , 3F
需要啊,有什麼問題嗎
09/15 23:21, 3F

09/15 23:29, , 4F
程式行為已經考慮了, 目前加不加volatile都是正確的
09/15 23:29, 4F

09/15 23:31, , 5F
只是想問, 是否Compiler對 SHM 的處理就已經視為有加的情況
09/15 23:31, 5F

09/15 23:33, , 6F
我是以效能的角度思考, 希望能在最快的時間取得最新的值
09/15 23:33, 6F

09/16 00:30, , 7F
compiler應該不會知道那是shared memory?
09/16 00:30, 7F

09/16 23:30, , 8F
有使用global變數的話,連multiple thread程式都需要加.
09/16 23:30, 8F

09/16 23:34, , 9F
如果是最快的話好像就跟 volatile 沒什麼關係了
09/16 23:34, 9F

09/16 23:36, , 10F
你要的反而應該是 processor memory barrier 吧
09/16 23:36, 10F
文章代碼(AID): #1GL9Y3S6 (C_and_CPP)
文章代碼(AID): #1GL9Y3S6 (C_and_CPP)