线程关联和进程关联有什么区别?

问题描述:

线程关联和进程关联有什么区别?线程关联和进程关联有什么区别?

如果我有两个线程,并且我有双核心机器,那么是否可以在两个核心上并行运行这两个线程?

如果我使用处理器关联掩码,那么我可以控制核心上的进程的执行,但是当我必须在特定核心上运行线程时,我该如何让这些线程核心特定?

将会理解一个非常简单的例子。

我不知道您可以在.net中设置线程关联,因此环境决定在哪个内核上运行哪些线程。

+0

但如何在典型核心上运行线程? – DotNetBeginner 2010-03-24 12:03:10

+0

@布莱恩拉斯穆森 - 什么?我站在我的话后面,.NET没有办法强制特定的线程在特定的处理器上执行。有关详细信息,请参阅此主题:http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvb/thread/3279302a-6786-44a7-b69d-c302699b6fcb – Axarydax 2010-03-24 12:07:14

+0

对不起,我误解了你。 – 2010-03-24 12:12:46

Thread Affinity和Process affinity有什么区别?

进程关联是属于该进程的所有线程的默认关联掩码。如果未另外指定,则新线程将以进程关联掩码开始。但是,可以在不改变进程关联性(以及其他线程的关联掩码)的情况下更改单个线程的关联性,这就是进程和线程关联之间存在差异的时间。

如果我有两个线程,我有决斗核心机,那么是否有可能在两个核心上并行运行这两个线程?

是的,这是可能的,但在大多数情况下,你真的应该让操作系统来决定......很可能它比你聪明。

如果我使用处理器亲和度掩码,那么我可以控制核心上的进程的执行,但是当我必须在特定的核心上运行线程时,我怎样才能使这些线程核心特定?

你将不得不使用的P/Invoke调用非托管函数SetThreadAffinityMask()然后用Thread.BeginThreadAffinity()确保托管线程保持与特定的OS线程。 但你真的不想那么做!

+0

我已经尝试使用SetThreadAffinityMask(),请看看我的问题@ http://*.com/questions/2498501/using-setthreadaffinitymask-function-imported-from-kernel32-dl​​l-in-c-code – DotNetBeginner 2010-03-24 12:39:10