我正在使用C#。我想用线程概念编写程序。我只是想知道如何在不同的处理器中运行线程。在这里,我附上我的部分代码:
Thread t1 = new Thread(threadJobA);
Thread t2 = new Thread(threadJobB);
t1.Start();
t2.Start();
答案 0 :(得分:5)
简短的回答,就像我在评论中说的那样:“别担心。”如果你不得不提出这个问题,那么绝对不值得你提出任何努力。
也就是说,真正这样做的方法是设置“线程相关性掩码”,它控制允许线程运行的逻辑处理器。我不确定你甚至可以用CLR线程来做这件事(它可能会爆炸,世界将会结束。)但如果你有一个使用CreateThread
创建的普通线程,那么你可以设置亲和力掩码使用SetThreadAffinityMask
。
但是真的。不要这样做。
答案 1 :(得分:0)
为什么要在处理器上接听电话?这背后的理性是什么?
纯粹的操作系统负责将作业/任务委派给处理器。这是为了管理所有正在运行的进程/任务的执行时间。如果你有一个四核处理器,那么所有处理器都不一定总是被赋予相同的负载。操作系统正在管理PCB以在正在运行的进程之间共享可用资源。
TPL可以平行执行您的代码,明智地应用TPL将提高性能。
答案 2 :(得分:-1)
您可以简单地使用Task Parallel Library,这样可以很好地将线程委派给CPU核心。
当你想在不同的处理器中运行线程时,你会遇到跨越“AppDomain”边界的问题。