正确可以使用的SetThreadAffinityMask

原创 2011年01月17日 23:20:00

void SetCoreMask(short nMask)
{
    SYSTEM_INFO si;
    GetSystemInfo(&si);

    short nValue = 0x0001;
    for (int i=0; i<(si.dwNumberOfProcessors-1); ++i)
    {
        nValue = nValue << 1;
        nValue |= 0x0001;
    }

    if (nMask <= nValue)
        m_nAffinityMask = nMask;
}

bool AttachToCore()
{
    m_dwID = GetCurrentThreadId();
    HANDLE hThread, hThreadDup;
    hThread = GetCurrentThread();
    BOOL bSuccess = DuplicateHandle(GetCurrentProcess(), hThread,
        GetCurrentProcess(), &hThreadDup,
        0, FALSE,
        DUPLICATE_SAME_ACCESS);
    CloseHandle(hThread);

    if (!bSuccess)
        return FALSE;

    m_handle = hThreadDup;
    SetThreadAffinityMask(hThread, m_nAffinityMask);

    return TRUE;
}

 

然后再程序开始的地方(比较靠前的地方)加入:

    SetCoreMask((short)m_CPUCoreNO);
    if(!AttachToCore())
    {
        printf("指定的CPU核心%d有误,程序退出。",m_CPUCoreNO);

        //暂停窗口
        system("pause");

        return 0;
    }

 

 

Log.isLoggable之一正确的使用姿势

  • 2017年06月05日 14:58
  • 58KB
  • 下载

ViewPager的正确使用

  • 2014年03月03日 16:35
  • 1.26MB
  • 下载

阿里云centos7使用yum安装mysql的正确姿势

yum快速安装mysql 新增yum源 rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm 查看...

如何正确使用电脑

  • 2014年08月28日 18:00
  • 369KB
  • 下载

如何正确使用集群对讲机

  • 2014年07月21日 16:31
  • 37KB
  • 下载

AS 关于Freeline的正确使用姿势

一直听说 Freeline 可以秒编,不用不知道。用了吓一跳。 当然除了它的速度惊人之外,当然,它的坑也相当惊人。首先我们来看先官方的一些东西,以及配置。Freeline是由蚂蚁聚宝Android团...

如何正确使用蓝牙耳机

  • 2014年12月24日 10:28
  • 34KB
  • 下载

正确使用Block避免循环引用(一)

正确使用Block避免循环引用
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:正确可以使用的SetThreadAffinityMask
举报原因:
原因补充:

(最多只允许输入30个字)