擅长:python、mysql、java
<p>这听起来像是一个简单的生产者-消费者队列。在Java中,您应该考虑使用<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html" rel="nofollow">ConcurrentLinkedQueue</a>。在Python中,线程程序可以使用<a href="https://docs.python.org/2/library/queue.html" rel="nofollow">Queue.Queue</a>类,使用<code>multiprocessing</code>的程序可以使用<a href="https://docs.python.org/2/library/multiprocessing.html#multiprocessing.Queue" rel="nofollow">multiprocessing.Queue</a>类。在</p>
<p>除非这是家庭作业,并且要求您自己使用特定的锁定机制来实现代码。我知道实现生产者-消费者队列的最简单方法是使用两个或三个信号量:</p>
<ul>
<li>一个信号量,用于计算队列中的元素数。最初是零。在</li>
<li>一个信号量,用于计算队列中元素的限制/最大数量,并以此最大数量初始化。如果不需要有限的队列,这是可选的。在</li>
<li>一个信号量、互斥或关键部分,用于共享对内部队列/链接列表的访问。在Python中,线程程序不需要这样做,因为GIL允许您向列表中添加元素,而无需同步线程。在</li>
</ul>