首页 > 试题广场 >

修改下面生产者——消费者总是的解法中的错误:

[问答题]

修改下面生产者——消费者总是的解法中的错误:

producer                    consumer

begin                       begin

repeat                       repeat

.                           p(mutex);

produce a new message m;      p(empty);

p(mutex);                    m:=buffer(out);

p(full);                      out:=out+1;

buffer(in):=m;                v(mutex);

v(mutex);                    consume message m;

until false                    until false

end                         end

同步在外,互斥在内
发表于 2020-03-29 08:27:28 回复(0)

 p(mutex);

produce a new message m;      p(empty);
这里会导致死锁,应该先wait(empty),再wait(mutex)
发表于 2019-11-24 21:49:33 回复(0)