可能重复:
CPU Affinity
在运行Linux(fc12)的x86机器上,我可以创建一个在多处理器系统的特定核心上运行的进程吗?我知道有一个函数sched_setaffinity
可以帮助选择处理器,但我想在处理器的特定核心上执行该过程。
答案 0 :(得分:1)
不确定这是否是您所需要的,我使用此代码在特定核心上运行线程。 编译并链接-pthread。
#include "pthread.h"
#include "sched.h"
int affinity = 3; //core id
pthread_t mythread;
mythread = pthread_self();
cpu_set_t cpuset;
CPU_ZERO(&cpuset);
CPU_SET(affinity, &cpuset); //lets kernel know only core affinity may run this thread
if (pthread_setaffinity_np(mythread, sizeof(cpu_set_t), &cpuset) <0){
perror("sched_set_affinity");
}
答案 1 :(得分:0)
AFAIK你无法区分CPU内核和CPU。就Linux而言,核心是完全成熟的CPU。例如,如果您有2个CPU,每个CPU有2个内核,Linux会认为您有4个CPU。