[問題] pingpong buffer 保護的問題

看板C_and_CPP作者 (eleghost)時間15年前 (2010/03/31 22:37), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 我使用一塊 (32KB) shared memory共享資料, 但我是這樣分配的.. 1. shm是使用mmap所產生的. 2. 上下兩塊, 每塊各16KB (p1 / p2) 3. 當我寫進shm時, 有使用mutex保護. 4. 原本希望當A寫p1時, B2讀p2. 反之亦然. 問題: 寫或讀 shm 時有用mutex保護, 但我想這樣子不就失去原本設計pingpong的 意義了, 變成A / B必須要互相等待. 希望得到的正確結果: 請問有甚麼方法可以達到我想要的功能呢? 謝謝. 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) linux 2.6 .. 有問題的code: (請善用置底文標色功能) 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.35.202.49

04/01 00:02, , 1F
切三塊? XD 如果一邊比較快, 即使用 double buffer 也一樣
04/01 00:02, 1F

04/01 00:02, , 2F
會有一邊要一直等啊, 最好的情況是讀、寫差不多快
04/01 00:02, 2F

04/01 00:23, , 3F
I don't understand the problem. Why don't you use
04/01 00:23, 3F

04/01 00:23, , 4F
two mutex locks on p1 and p2?
04/01 00:23, 4F
文章代碼(AID): #1BiruDyj (C_and_CPP)