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