win下线程亲和性概念

 

微软官方文档:https://docs.microsoft.com/en-us/windows/win32/procthread/multiple-processors

 

译文如下:

        具有多个处理器的计算机通常是为两种体系结构之一而设计的:非统一内存访问(NUMA)对称多处理(SMP)

        在NUMA计算机中,每个处理器比其他处理器更接近内存的某些部分,使得内存的某些部分的内存访问比其他部分更快。在NUMA模型下,系统试图在接近所用内存的处理器上调度线程。有关NUMA的更多信息,请参见NUMA支持

        在SMP计算机中,两个或多个相同的处理器或内核连接到一个共享的主内存。在SMP模式下,任何线程都可以分配给任何处理器。因此,在SMP计算机上调度线程类似于在具有单个处理器的计算机上调度线程。然而,调度器有一个处理器池,因此它可以调度线程并发运行。调度仍然由线程优先级决定,但是它会受到设置线程相似性和线程理想处理器的影响,如本主题中所讨论的。

线程关联性

        线程亲和性强制线程在特定的处理器子集上运行。通常应该避免设置线程关联性,因为它会干扰调度器跨处理器有效调度线程的能力。这可能会降低并行处理带来的性能提升。线程关联性的一个恰当使用是测试每个处理器。

        该系统用一个称为处理器相似性掩码的位掩码来表示相似性。相似性掩码是系统中最大处理器数量的大小,通过设置位来标识处理器的子集。最初,系统确定掩码中处理器的子集。

        您可以通过调用GetProcessAffinityMask功能。使用SetProcessAffinityMask函数为进程的所有线程指定线程关联性。若要为单个线程设置线程关联性,请使用SetThreadAffinityMask功能。线程关联性必须是进程关联性的子集。

        在超过64个处理器的系统上,相似性掩码最初代表单个处理器组中的处理器。但是,线程关联性可以设置为不同组中的处理器,这将改变进程的关联性掩码。有关更多信息,请参见处理器组

线程理想处理器

        当您指定线程理想处理器,调度程序尽可能在指定的处理器上运行线程。使用SetThreadIdealProcessor函数为线程指定首选处理器。这并不保证会选择理想的处理器,但为调度程序提供了有用的提示。在超过64个处理器的系统上,您可以使用SetThreadIdealProcessorEx函数指定特定处理器组中的首选处理器。

NUMA支持

处理器组

 


若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值