用SetProcessAffinityMask为进程指定CPU


The SetProcessAffinityMask function sets a processor affinity mask for the threads of the specified process.


BOOL SetProcessAffinityMask(
  HANDLE hProcess,
  DWORD_PTR dwProcessAffinityMask
);

      //get system info
    SYSTEM_INFO SystemInfo;
    GetSystemInfo(&SystemInfo);

    printf(" "
        "dwNumberOfProcessors=%u, dwActiveProcessorMask=%u, wProcessorLevel=%u, "
        "wProcessorArchitecture=%u, dwPageSize=%u ",
        SystemInfo.dwNumberOfProcessors, SystemInfo.dwActiveProcessorMask, SystemInfo.wProcessorLevel,
        SystemInfo.wProcessorArchitecture,SystemInfo.dwPageSize
        );
    if(SystemInfo.dwNumberOfProcessors <= 1) return;

    DWORD dwMask = 0x0000;
    DWORD dwtmp = 0x0001;
    int nProcessorNum = 0;
    for(int i = 0; i < 32; i++)
    ...{
        if(SystemInfo.dwActiveProcessorMask & dwtmp)
        ...{
            nProcessorNum++;
            if(nProcessorNum <= 2)
            ...{
                //如果系统中有多个处理器,则选择第二个处理器
                dwMask = dwtmp;
            }
            else
            ...{
                break;
            }
        }

        dwtmp *= 2;

    }//end of for

    //进程与指定cpu绑定
    SetProcessAffinityMask(GetCurrentProcess(), dwMask);
    //线程与指定cpu绑定
    //SetThreadAffinityMask(GetCurrentThread(),dwMask);

    return ;

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/baodi_z/archive/2007/10/30/1857820.aspx

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值