unsigned WINAPI SetCpuAffinity_tt(void * pParam) { DWORD_PTR mask = 0L; int cpu_z = GetNumberOfWorkers(); /* 设置进程总是在除开CPU0之外的其他核心运行 */ switch (cpu_z) { case 2: mask = 0x02; break; case 3: mask = 0x06; break; case 4: mask = 0x0e; break; case 6: mask = 0x3e; break; case 8: mask = 0xfe; break; default: break; } if (mask) { SetProcessAffinityMask(GetCurrentProcess(),mask); } return (1); }
unsigned WINAPI SetCpuAffinity_tt(void * pParam) { int cpu_z = 0; HANDLE hc = (HANDLE)pParam; if (hc) { SuspendThread(hc); cpu_z = GetNumberOfWorkers(); if ( !cpu_z ) { cpu_z = read_appint(L"General",L"ProcessAffinityMask"); } if ( cpu_z>5 ) { SetThreadAffinityMask(hc, 0x1c); } else if ( cpu_z>3 ) { SetThreadAffinityMask(hc, 0xe); } else if ( cpu_z>2 ) { SetThreadAffinityMask(hc, 0x6); } else { SetThreadAffinityMask(hc, 0x1); } ResumeThread(hc); CloseHandle(hc); } return (1); }