生产-消费者模型是多线程编程中的基本模型也是运用最多的模型,而它的原理就是一个线程向缓冲池中扔东西,另一个线程从缓冲池中把东西拿走.所以在这个模型中缓冲池是一个核心,它是生产-消费者之间的桥梁并且能进行一些控制.池满了则生产者必须等待,池空了则消费者必须等待.这里的关键就是缓冲池必须是固定大小不能随意扩充,因为程序一瞬间就能把堆耗尽.就是好比我们去蛋糕店买蛋糕,柜台和货架就是缓冲池糕点师是不能无限制的做蛋糕.所以缓冲池的最大,最小值(不一定为0)就是临界条件.而在我前面的文章中提到了使用Event_Trigger(实际上Event_Trigger就是Semaphore,只不过我自己实现了一个Semaphore)来控制临界条件,而不是使用双重检测这种东西(当然不是说双重检测无用,只是应用面很小).我自己实现的锁Unique中使用了它(但没有用Event_Trigger来控制临界条件,在本文中将使用.).我喜欢用Queue来做缓冲池的载体,因为在某些应用中会要求先后顺序(FIFO).





















































