如何在不同的核心上拆分长任务?

Fra*_*k59 6 c# multithreading

我是多线程的新手.我的计算机上有4个逻辑进程,我想在4个不同的核心上的线程中运行4个相同的任务.我该怎么做?我尝试使用BackgroundWorker但是4个BackgroundWorker实例只填充了4个可用的4个核心.我用BackgroundWorker的代码示例:

        BackgroundWorker worker = new BackgroundWorker();
        worker.DoWork += new DoWorkEventHandler(worker_DoWork);
        worker.RunWorkerAsync(calculationParams);
        BackgroundWorker worker1 = new BackgroundWorker();
        worker1.DoWork += new DoWorkEventHandler(worker_DoWork);
        worker1.RunWorkerAsync(calculationParams1);

        BackgroundWorker worker2 = new BackgroundWorker();
        worker2.DoWork += new DoWorkEventHandler(worker_DoWork);
        worker2.RunWorkerAsync(calculationParams2);

        BackgroundWorker worker3 = new BackgroundWorker();
        worker3.DoWork += new DoWorkEventHandler(worker_DoWork);
        worker3.RunWorkerAsync(calculationParams3);
Run Code Online (Sandbox Code Playgroud)

Igo*_*evo 3

如果您使用任务,则可以为任务设置处理器关联性。查看以下帖子:将 Task<T> 强制到不同的核心?

我认为你不能用 来做到这一点BackgroundWorker。您应该使用线程或任务。

您可能会感兴趣的另一篇文章是:Multi coreprogramming using Task Parallel Library with .NET 4.0