问题描述:在生产者-消费者问题中,如果将两个wait操作互换位置,即wait(full)和wait(mutex)互换位置(或者wait(empty)和wait(mutex)互换位置),其后果如何?如果将两个signal操作互换位置,即signal(full)和signal(mutex)互换位置(或者signal(emty)和signal(mutex)互换位置),又会如何呢?
先上图,
图1
图1中第一个图表示假设一个消费者和一个仓库,然后第二个图表示他进去后把仓库锁上了,然而此时仓库中并没有item,进程被block了,于是他也打不开锁,出不去。
图2
图2表示第二个人是生产者,他想要进去放item,但是门已经锁上了,他也进不去,于是就造成了生产者被困在外面,消费者被困在里面,形成死锁。
上代码:
int