我需要根据用户 PC 的逻辑核心数在不同的进程上分配工作负载。工作量由以下代码完成:
static void work()
{
WorkData myData = new WorkData();
Worker myWorker = new Worker(myData);
MyWorker.doWork()
}
我用这段代码计算逻辑核心:
int nbProcessors = 1;
foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
{
nbProcessors = Convert.ToInt32(item["NumberOfLogicalProcessors"]);
}
现在,我必须通过在逻辑核心上共享工作来完成我的 work() 10000 次,所以对于我的电脑来说,这意味着启动 8 个进程,每个进程有 1250 次 work() 迭代。我还需要每个进程都有自己的数据,这样我就不会发生冲突。
我怎样才能做到这一点?