我建立了一个具有多个使用者线程的生产者线程。我已经使用了一个队列,生产者将所有任务放在其中。然后,消费者线程使用get检索任务并执行它们。我一直遇到的问题是队列中的某些项目被多个使用者线程捕获。
在Automator类中,创建线程池,然后使用TaskThreadPool的add_task方法将所有任务放入队列。然后,TaskRunners开始将所有任务从队列中拉出并运行它们。在第一个周期完成之后,每个后续线程的每个使用者线程将同时抓取最后一个项目。因此,在这种情况下,当只应运行1个任务时,我会看到多个相同的任务正在运行。我尝试在执行_q.get之前在使用者线程中添加锁,但是仍然得到相同的结果。我该如何确保只有一个线程会抓取任务,并阻止另一个线程接触它。
<canvas id="myCanvas_one"></canvas>
答案 0 :(得分:0)
The issue was my method that was handing items to the Queue. I added an additional check to stop unneeded items from being added to the queue.