正确可以使用的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;
    }

 

 

Python可以这样学(第三季:多线程与多进程编程)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,通过大量实际案例讲解Python 3.5.x和3.6.x中的多线程与多进程编程。
  • 2017年04月30日 11:05

SetThreadAffinityMask 线程调度

通过调用SetThreadAffinityMask,就能为各个线程设置亲缘性屏蔽:    DWORD_PTR  SetThreadAffinityMask  (        HANDLE  hThr...
  • lltaoyy
  • lltaoyy
  • 2016-08-18 17:35:39
  • 335

多cpu下SetThreadAffinityMask运用框架

多cpu下SetThreadAffinityMask运用框架Author:zfive5(zidong)Email :zfive5@yahoo.com.cn“舍”的目的,是为了“得”!随着多cpu机器的...
  • zfive5
  • zfive5
  • 2007-01-31 21:32:00
  • 4703

SetThreadAffinityMask 函数使用慎重

SetThreadAffinityMask函数设置线程在那个CPU(或者核)上运行。有个采集程序使用了这个函数发现,可能硬件板卡的驱动发生冲突。造成硬件蓝屏。后来去掉此函数没问题,请问有经验的大侠!指...
  • pipi0714
  • pipi0714
  • 2012-04-28 16:12:42
  • 4284

SetThreadAffinityMask用途

通过调用SetThreadAffinityMask,就能为各个线程设置亲缘性屏蔽:   DWORD_PTR SetThreadAffinityMask  (      HANDLE  hThread,...
  • qiaochenglei
  • qiaochenglei
  • 2009-10-24 19:13:00
  • 5586

根据内核来创建线程--SetThreadAffinityMask函数的使用

CPU亲缘性介绍 按照默认设置,当系统将线程分配给处理器时,Windows使用软亲缘性来进行操作。这意味着如果所有其他因素相同的话,它将设法在它上次运行的那个处理器上运行线程。让线程留在单个处理器上,...
  • lucksy_chris
  • lucksy_chris
  • 2015-05-04 11:06:54
  • 977

SetThreadAffinityMask的用法

MSDN上的描述:  SetThreadAffinityMask The SetThreadAffinityMask function sets a processor affinity m...
  • djd1234567
  • djd1234567
  • 2015-10-13 21:11:40
  • 1225

48.VC(custom)-SetThreadAffinityMask 把线程限定在CPU上运行

很简单的函数: 比如把当前线程限制在CPU0(第一个processor)上运行: SetThreadAffinityMask(GetCurrentThread(), 1) 第0位是1 又比如要把当前线...
  • hgy413
  • hgy413
  • 2012-10-07 09:14:52
  • 2212

SetThreadAffinityMask详解

SetThreadAffinityMask详解
  • gaoxiaowei
  • gaoxiaowei
  • 2010-07-15 11:27:00
  • 5179

正确可以使用的SetThreadAffinityMask

void SetCoreMask(short nMask) {     SYSTEM_INFO si;     GetSystemInfo(&si);     short nValue = 0...
  • RookieRock
  • RookieRock
  • 2011-01-17 23:20:00
  • 1791
收藏助手
不良信息举报
您举报文章:正确可以使用的SetThreadAffinityMask
举报原因:
原因补充:

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