如何使用Win32 API的SetThreadAffinityMask

之前就在博客上提及过这个函数,但如今发现,自己对它的使用存在问题。

1.先确定这个函数是怎么回事,来自: SetThreadAffinityMask function (winbase.h)

为特定的线程设置处理器关联掩码

句法:

DWORD_PTR SetThreadAffinityMask(
  [in] HANDLE    hThread,
  [in] DWORD_PTR dwThreadAffinityMask
);

参数:
[in] hThread
要被设置关联掩码的线程的句柄。该句柄必须有THREAD_SET_INFORMATION或THREAD_SET_LIMITED_INFORMATION访问权限和THREAD_QUERY_INFORMATION或THREAD_QUERY_LIMITED_INFORMATION访问权限。
[in] dwThreadAffinityMask
线程的关联掩码

返回值:
如果函数成功,则返回值为线程的上一个关联掩码。
如果函数失败,则返回值为零。要获取扩展错误信息,请调用 GetLastError。
如果线程关联掩码请求的处理器未被进程关联掩码选中,则最后一个错误代码为ERROR_INVALID_PARAMETER。

备注:
线程关联掩码是一个位向量,其中每个位代表允许线程在其上运行的逻辑处理器。线程关联掩码必须是线程所在进程的进程关联掩码的子集。线程只能在其进程可以运行的处理器上运行。因此,当进程关联掩码为某个处理器指定 0 位时,线程关联掩码不能为该处理器指定 1 位。

也就是说先要获得进程的关联掩码,那么该如何获得线程的关联掩码呢?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值