我正在处理一个具有以下工作流程的项目:
第一部分:
1. 异步到达事件并排队在阻塞队列中,我们将其称为Q1。 2. 线程从该队列中选择下一个可用项目。 3. 项目最终会并行运行N个任务。 4. 每个任务都在第二个队列上排队,我们将其称为Q2。 5. 当项目处理完成时,将读取队列中的下一个项目。
第二部分:
1. 另一个线程按顺序从Q2中读取一个对象,并处理结果。
因此,这里的问题是,第一个队列中的每个项目最终都会并行运行大量任务,并且每个任务都会将其结果排队。第二个队列必须以串行方式逐个处理,但是它过于拥挤。
我的问题是:
我需要一种机制,使处理Q1的线程等待,直到Q2中的项数低于特定阈值。 最好的方式是什么?是否有事件驱动的解决方案而不是轮询解决方案?
第一部分:
1. 异步到达事件并排队在阻塞队列中,我们将其称为Q1。 2. 线程从该队列中选择下一个可用项目。 3. 项目最终会并行运行N个任务。 4. 每个任务都在第二个队列上排队,我们将其称为Q2。 5. 当项目处理完成时,将读取队列中的下一个项目。
第二部分:
1. 另一个线程按顺序从Q2中读取一个对象,并处理结果。
因此,这里的问题是,第一个队列中的每个项目最终都会并行运行大量任务,并且每个任务都会将其结果排队。第二个队列必须以串行方式逐个处理,但是它过于拥挤。
我的问题是:
我需要一种机制,使处理Q1的线程等待,直到Q2中的项数低于特定阈值。 最好的方式是什么?是否有事件驱动的解决方案而不是轮询解决方案?