首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Thread.BeginThreadAffinity

Thread.BeginThreadAffinity
EN

Stack Overflow用户
提问于 2012-08-06 17:34:57
回答 1查看 853关注 0票数 2

我一直试图从我的一个程序中挤出更多的性能,并且阅读了优先级和亲和力设置,我偶然发现了Thread.BeginThreadAffinity,它的文档中写着:

通知主机托管代码即将执行依赖于当前物理操作系统线程标识的指令。

我在我的程序中对此进行了测试,性能提高了3-4% .据我所知,如果您的代码被移动到不同的物理操作系统线程,它将失去关联设置,但是使用Thread.BeginAffinity时,它将保持在同一个线程上,保持关联设置,因为我的关联设置被提升了,因此性能得到了提高。

是这样的吗?还是我误解了Thread.BeginAffinity

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-06 18:02:35

根据msdn,您是正确的

公共语言运行库的某些主机(如Microsoft 2005 )提供自己的线程管理。提供自己的线程管理的主机可以在任何时候将执行任务从一个物理操作系统线程移动到另一个物理操作系统线程。大多数任务不受此切换的影响。但是,有些任务有线程关联--也就是说,它们依赖于物理操作系统线程的标识。这些任务在执行不应该切换的代码时必须通知主机。 例如,如果应用程序调用system来获取具有线程关联的操作系统锁(如Win32 CRITICAL_SECTION ),则必须在获取锁之前调用BeginThreadAffinity,在释放锁后调用EndThreadAffinity。 在Server 2005下运行的代码中使用此方法需要在最高主机保护级别运行代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11833120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档