【发布时间】:2010-02-05 14:49:54
【问题描述】:
我有多个与 ThreadPool 一起使用的处理器对象,以便在并行进程中使用它们。我将使用哪种处理器基本上取决于传入的数据,可能有超过 2000 种不同的类型;因此,一旦我的应用程序运行,它就会在字典中创建 1-2K 数量的处理器,并根据 ThreadPool 中的传入数据运行我需要的处理器。顺便说一句,任何过程都不会超过一毫秒。
我在线程池中运行的伪代码如下:
public void onIncomingNewData(rawData)
{
if (!ThreadPool.QueueUserWorkItem(processors[rawData.Type.Id].Process, rawData))
{
Console.WriteLine("Work item cannot be queued!");
}
//Thread.Sleep(1);
}
我的问题是同步处理器对象;他们有自己的内部缓存,我不希望多个线程运行相同的 Process 对象处理方法。
目前我在处理方法和处理方法调用的其他一些私有方法中使用“锁定”。但是最好的方法是什么?
【问题讨论】:
-
取决于“同步”的含义。这种同步的目标是什么?
标签: c# multithreading parallel-processing threadpool