我是多线程的新手.我的计算机上有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)
如果您使用任务,则可以为任务设置处理器关联性。查看以下帖子:将 Task<T> 强制到不同的核心?。
我认为你不能用 来做到这一点BackgroundWorker。您应该使用线程或任务。
您可能会感兴趣的另一篇文章是:Multi coreprogramming using Task Parallel Library with .NET 4.0。
| 归档时间: |
|
| 查看次数: |
1049 次 |
| 最近记录: |