如何使用c#在不同的处理器中运行线程?

时间:2012-10-11 04:55:55

标签: c# multithreading

  

可能重复:
  How do I spawn threads on different CPU cores?

我正在使用C#。我想用线程概念编写程序。我只是想知道如何在不同的处理器中运行线程。在这里,我附上我的部分代码:

Thread t1 = new Thread(threadJobA);
Thread t2 = new Thread(threadJobB);
t1.Start();
t2.Start();

3 个答案:

答案 0 :(得分:5)

简短的回答,就像我在评论中说的那样:“别担心。”如果你不得不提出这个问题,那么绝对不值得你提出任何努力。

也就是说,真正这样做的方法是设置“线程相关性掩码”,它控制允许线程运行的逻辑处理器。我不确定你甚至可以用CLR线程来做这件事(它可能会爆炸,世界将会结束。)但如果你有一个使用CreateThread创建的普通线程,那么你可以设置亲和力掩码使用SetThreadAffinityMask

但是真的。不要这样做。

答案 1 :(得分:0)

为什么要在处理器上接听电话?这背后的理性是什么?

纯粹的操作系统负责将作业/任务委派给处理器。这是为了管理所有正在运行的进程/任务的执行时间。如果你有一个四核处理器,那么所有处理器都不一定总是被赋予相同的负载。操作系统正在管理PCB以在正在运行的进程之间共享可用资源。

TPL可以平行执行您的代码,明智地应用TPL将提高性能。

答案 2 :(得分:-1)

您可以简单地使用Task Parallel Library,这样可以很好地将线程委派给CPU核心。

当你想在不同的处理器中运行线程时,你会遇到跨越“AppDomain”边界的问题。