考虑使用此代码在特定处理器核心上设置线程关联:
pthread_attr_t attr;
cpu_set_t cpu;
CPU_ZERO(&cpu);
CPU_SET(CoreNumber, &cpu);
pthread_attr_init(&attr);
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
pthread_attr_setaffinity_np(&attr,sizeof(cpu_set_t),&cpu);
pthread_attr_setschedpolicy(&attr,SCHED_FIFO);
pthread_create(Thread,&attr,func,param);
我的系统有4个物理内核,每个内核有2个逻辑内核。使用此代码,当我的核心编号为4时,每个线程都在一个单独的核心上运行。例如,线程1在核心0上运行,线程2在核心2上运行,等等。
我想更改亲和力,以便在每个核心上运行两个线程。例如,线程1和线程2在核心1的两个逻辑核心上运行,线程3和线程4在核心2的两个逻辑核心上运行。
这可能吗?我该如何更改上面的代码?