我有一个不断填充工作项的队列 这些项目需要及时处理 - 所以我们有许多不同的处理器等待接收正在处理的项目
这些子处理器中的每一个一次只能处理一组数据,并且需要将数据推送到它,所以这就是我考虑这样做的方式
首先是:
我在想
我的问题是,我如何管理处理器对象上的线程 我正在考虑做以下其中一项:
谢谢 的修改
我似乎一直不清楚 - 数据不必由所有处理器处理 它可以由任何处理器处理 - 但是一旦处理器开始处理数据,我们就不能发送任何新数据,直到它完成处理 - 同时新数据涌入队列,管理者需要尽快保持数据输出尽可能 -
所以循环再次像这样
在处理器端 - 数据被发送到外部系统(一个有点长的过程)并且处理器等待外部系统返回并且它存储处理过的数据 - 只有那时处理器才可用于新的集合队列中的数据
答案 0 :(得分:1)
我设法建立类似队列管理系统的最简单方法是在C#中使用内置的Queue对象。
public volatile Queue<MessageObject> q = new Queue<MessageObject>();
现在必须将消息发送到每个线程,如果您不想真正处理同步,请锁定并弹出顶部对象。您可以假脱机线程,或使用EventHandler。如果使用EventHandler,则需要在两个线程上进行同步,但它应该更快。
lock(q) {
this.nextcommand = q.Pop();
}