一、原理
生产者线程:
while (true)
生产
wait(empty)
wait(mutex)
将产品放入队列
signal(mutex)
signal(full)
end while
消费者线程:
while (true)
wait(full)
wait(mutex)
从队列中取出产品
signal(mutex)
signal(empty)
消费
end while
信号量full表示可消费的产品数量,empty代表空单元的数量(用于容纳新生产的产品),mutex用于互斥地访问产品队列。wait操作对应于P原语,表示可用资源数量加快(减慢)生产,减慢(加快)消费”来随机调整生产和消费的时间,以观察生产者或消费者线程阻塞的状况。
程序在VC++6.0下编译通过。
1