在处理器的特定核心上运行进程

时间:2012-08-30 12:48:21

标签: linux operating-system multiprocessing

  

可能重复:
  CPU Affinity

在运行Linux(fc12)的x86机器上,我可以创建一个在多处理器系统的特定核心上运行的进程吗?我知道有一个函数sched_setaffinity可以帮助选择处理器,但我想在处理器的特定核心上执行该过程。

2 个答案:

答案 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。