我有一个不断被工作项填充的队列--这些项需要及时处理--所以我们有许多不同的处理器等待接收正在处理的项。
每个子处理器一次只能处理一组数据,需要将数据推送到它,所以我就是这么想的。
它从以下方面开始:
我在想
我的问题是,如何管理处理器对象上的线程,我正在考虑执行以下操作之一:
谢谢编辑
我似乎不清楚--数据不必由所有处理器处理--任何处理器都可以处理--然而,一旦处理器开始处理数据,我们就不能在它完成处理之前发送任何新的数据--同时,新的数据正涌入队列,管理人员需要尽可能快地分发数据--
所以循环又是这样的
在处理器端,数据被发送到外部系统(一个稍微宽松的进程),处理器等待外部系统返回并存储处理过的数据,只有这样,处理器才可用,除了队列中的一组新的数据。
发布于 2012-08-13 18:37:28
最简单的方法是使用C#中的内置队列对象来实现类似的队列管理系统。
public volatile Queue<MessageObject> q = new Queue<MessageObject>();
现在必须将消息发送到每个线程,如果您不想真正处理同步,那么锁定并弹出顶部的对象。您可以对线程进行后台处理,也可以使用EventHandler。如果使用EventHandler,则需要在两个线程上同步,但速度应该更快。
lock(q) {
this.nextcommand = q.Pop();
}
https://stackoverflow.com/questions/11939987
复制相似问题