先介绍一下引文:http://blog.csdn.net/feixiaoxing/article/details/7032234
文中对生产者和消费者总共使用了3个锁,不是很理解,一直以为对于生产者获取空锁是没有必要的,只需要一个锁满足读写互斥就可以,后来经过另一篇文章提纲挈领的介绍才恍然大悟:
一组生产者进程和一组消费者进程共享一个初始为空、大小为n的缓冲区,只有缓冲区没满时,生产者才能把消息放入到缓冲区,否则必须等待;只有缓冲区不空时,消费者才能从中取出消息,否则必须等待。由于缓冲区是临界资源,它只允许一个生产者放入消息,或者一个消费者从中取出消息。