个人在编写应用程序时,需要指定某个线程在cpu特定核上运行,通过测试,发现应用该函数,对应用程序的效率有很大提高。但是也不是对所有情况都试用:个人认为该优化方法要求线程数量不能太多,其中有一个线程执行频率较高,对实时性要求比较高,比如网络摄像头数据获取线程等等。
在windows平台下的函数为:DWORD_PTR SetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask);其中hThread 为要指定的线程,dwThreadAffinityMask为被指定CPU的核ID,如果为四核处理器,则可以为0x00000001,0x00000002,0x00000004,0x00000008。
在linux平台下的函数为: int pthread_setaffinity_np(pthread_t thread,size_t cpusetsize,const_cpu_set_t *cpuset);
int pthread_getaffinity_np(pthread_t thread,size_t cpusetsize,const_cpu_set_t *cpuset);
***因为对linux不是很了解,所以在此不进行详细介绍,有兴趣的朋友,可以度娘一下
//指定主线程在cpu的某个核
#include <windows.h>
HANDLE hThread;
int main()
{
hThread = GetCurrentThread();