看板 Grad-ProbAsk 關於我們 聯絡資訊
https://i.imgur.com/AtNCTE2.jpg
想問這個算法有race condition是因為 producer, consumer 各不只一個嗎? 我記得老師說 in out buffer有 race condition 但看不出來在哪 ----- Sent from JPTT on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.247.35.73 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1597054929.A.A0F.html ※ 編輯: NTUmaki (27.247.35.73 臺灣), 08/10/2020 18:29:31 ※ 編輯: NTUmaki (27.247.35.73 臺灣), 08/10/2020 18:31:12
A4P8T6X9: 生產者跟消費者同時做事會爆 08/10 21:37
我找不到哪個地方 這兩者會對同一塊位址做讀寫 consumer拿跟producer放的位址應該一直都不一樣?
b10007034: Producer(P)是load, Consumer(C)是store 08/10 22:12
b10007034: P&C這兩個thread同時執行,操作的buffer會有 08/10 22:12
b10007034: race condition 08/10 22:12
NTUmaki: 不太懂 race condition 在哪 buffer的位址沒有變 他們拿 08/11 10:27
NTUmaki: 跟存的位址也不一樣 應該不會同時對同一個位址做存取? 08/11 10:27
※ 編輯: NTUmaki (27.247.35.73 臺灣), 08/11/2020 10:28:49
NTUmaki: 從底層來看 他們都只是拿buffer起始位址去運算 只有讀 而 08/11 10:40
NTUmaki: 且算完結果也不一樣(我自己trace了幾次 應該是不會一樣 08/11 10:40
NTUmaki: )不會race condition 才對呀? 08/11 10:40
f255577: P/C各跑一個concurrent thread可能會有不同結果 08/11 17:33
可以請問是什麼順序會造成問題嗎 因為我trace後覺得應該是不會有發生對同一個變數做RW或WW ※ 編輯: NTUmaki (27.247.35.73 臺灣), 08/11/2020 19:21:36
NTUmaki: 我還是看不出來buffer哪邊有問題,in out他們根本沒有互 08/11 19:26
NTUmaki: 相寫 應該不可能有race condition,buffer他們存入/取出 08/11 19:26
NTUmaki: 的位置也是不同的(只是起始位置相同 但RR不會 race cond 08/11 19:26
NTUmaki: ition 08/11 19:26
f255577: 不一定要互相寫才會race condition 08/11 21:53
但他們的讀寫哪邊會造成錯誤?
f255577: 另一邊讀也可能讀到寫前或寫後 08/11 21:54
讀到寫前寫後不會影響正確性啊? ※ 編輯: NTUmaki (27.247.35.73 臺灣), 08/11/2020 22:26:51
NTUmaki: 他們都是存完、取完才去更動in out 應該不會有錯? 08/11 22:27
NTUmaki: 可以給個會錯的例子嗎QQ 我看不太出來哪一種執行順序會導 08/11 22:28
NTUmaki: 致錯誤結果 08/11 22:28
f255577: 要用組語的角度看 可能load完就context switch 08/11 22:32
NTUmaki: Load完切走沒關係啊 另一邊並不會改動in 值? 你的意思是 08/12 09:12
NTUmaki: 說in=(in+1)%n 還沒執行完就被 consumer 切去判斷in==out 08/12 09:12
NTUmaki: 嗎? 這樣頂多他那次迴圈判斷浪費 但不會影響執行結果的 08/12 09:12
NTUmaki: 正確性啊 08/12 09:12
yagerbomb: 我看很久沒問題 只有 下一個演算法的count 因為兩邊有 08/12 09:35
yagerbomb: 做運算可能導致錯誤結果 其他幾個變數都不會因為concur 08/12 09:35
yagerbomb: rent導致錯誤結果 08/12 09:35
yagerbomb: 這問題明明就給個例子就解決了== 問那麼長 08/12 09:36
※ 編輯: NTUmaki (110.26.43.209 臺灣), 08/12/2020 09:37:53