PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Grad-ProbAsk
[理工] 作業系統 Producer-Consumer
作者:
NTUmaki
(西木野真姬)
2020-08-10 18:22:07
https://i.imgur.com/AtNCTE2.jpg
想問這個算法有race condition是因為 producer, consumer 各不只一個嗎?
我記得老師說 in out buffer有 race condition 但看不出來在哪
作者:
A4P8T6X9
(殘廢的名偵探)
2020-08-10 21:37:00
生產者跟消費者同時做事會爆
作者:
b10007034
(Warren)
2020-08-10 22:12:00
Producer(P)是load, Consumer(C)是storeP&C這兩個thread同時執行,操作的buffer會有race condition
作者:
NTUmaki
(西木野真姬)
2020-08-11 10:27:00
不太懂 race condition 在哪 buffer的位址沒有變 他們拿跟存的位址也不一樣 應該不會同時對同一個位址做存取?從底層來看 他們都只是拿buffer起始位址去運算 只有讀 而且算完結果也不一樣(我自己trace了幾次 應該是不會一樣)不會race condition 才對呀?
作者:
f255577
(沈大媽)
2020-08-11 17:33:00
P/C各跑一個concurrent thread可能會有不同結果
作者:
NTUmaki
(西木野真姬)
2020-08-11 19:26:00
我還是看不出來buffer哪邊有問題,in out他們根本沒有互相寫 應該不可能有race condition,buffer他們存入/取出的位置也是不同的(只是起始位置相同 但RR不會 race condition
作者:
f255577
(沈大媽)
2020-08-11 21:53:00
不一定要互相寫才會race condition另一邊讀也可能讀到寫前或寫後
作者:
NTUmaki
(西木野真姬)
2020-08-11 22:27:00
他們都是存完、取完才去更動in out 應該不會有錯?可以給個會錯的例子嗎QQ 我看不太出來哪一種執行順序會導致錯誤結果
作者:
f255577
(沈大媽)
2020-08-11 22:32:00
要用組語的角度看 可能load完就context switch
作者:
NTUmaki
(西木野真姬)
2020-08-12 09:12:00
Load完切走沒關係啊 另一邊並不會改動in 值? 你的意思是說in=(in+1)%n 還沒執行完就被 consumer 切去判斷in==out嗎? 這樣頂多他那次迴圈判斷浪費 但不會影響執行結果的正確性啊
作者:
yagerbomb
(ㄅD)
2020-08-12 09:35:00
我看很久沒問題 只有 下一個演算法的count 因為兩邊有做運算可能導致錯誤結果 其他幾個變數都不會因為concurrent導致錯誤結果這問題明明就給個例子就解決了== 問那麼長
繼續閱讀
Re: [理工] 線代 2-8
tavern
[理工] 作業系統 C.S design (software)
NTUmaki
Re: [理工] 線代 2-8
Honor1984
[理工] 線代 2-8
NTUmaki
[理工] 線代3-29例7
LSeohyun
[理工] 線代null space
ap15021
[理工] 作業系統 Claim edge
NTUmaki
[理工] 計組 106中山資工
lanlansaysay
[理工] 作業系統 RR排班
LaLaplace
[理工] 線代 矩陣rank
Chris7642
Links
booklink
Contact Us: admin [ a t ] ucptt.com