我有两个不同的队列,A和B,由它们自己的线程处理。线程A将页面从internet上拉出来,线程B扫描该页面中的所有链接并将其添加到线程A的队列中。正如您可以想象的那样,单个队列可以暂时清空,直到它的同伴线程为它添加更多的任务。但由于两个都可以在任何时候暂时清空,我不希望它们在其中一个清空时立即解除阻塞,只有在同一个实例中两个都变空时。在
我怎样才能做到这一点?我的伪代码,真正的交易太混乱了
QueueA
QueueB
ThreadA:
pull page
put raw HTML in QueueB
ThreadB:
pull links from raw HTML
add links to QueueA
QueueA.join()
QueueB.join()
我也尝试过这个方法,使用QueueC检查其他两个队列是否都是空的,它将解除阻塞,以便QueueA和B也可以解除阻塞:
^{pr2}$如您所见,如果QueueA变空,那么它的所有线程都会死亡,并且不会被恢复。解决这个问题的合适方法是什么?在
(我花了无数的时间来研究这个问题,除非我遗漏了一些我找不到这类问题的参考资料,谢谢你的帮助!)在
目前没有回答
相关问题 更多 >
编程相关推荐