0

我尝试遵循博客中的建议,似乎即使我将 CPU 集设置为我的 MacOS 的只有一个核心,每次都会涉及更多的一个线程。是否可以使线程仅在此类操作系统上的一个处理器中运行?提前致谢。

void *th_func(void *arg);

pthread_t thread; //the thread
int counted = 0;

void start() {
  int* n = (int*)malloc(sizeof(int));
  *n = 0;
  printf("creating on %d.\n",n[0]);
  pthread_create(&thread,NULL,th_func,((void*) n));
}

void waitall() {
    pthread_join(thread,NULL);
}

int main(int argc, char** args) {
 start();
  waitall();
 return 0;
}


void *th_func(void *arg)
{
  cpu_set_t cpuset;
  int cpu = ((int*)arg)[0];
  CPU_ZERO(&cpuset);
  CPU_SET( cpu , &cpuset);
  pthread_setaffinity_np(pthread_self(), sizeof(cpuset), &cpuset);
  printf("Start suffocating on %d.\n",cpu);
    while(1) {

    };
}

在此处输入图像描述

4

1 回答 1

0

这个问题似乎非常类似于Is it possible to set pthread CPU affinity in OS X? ; 我相信那里的答案也回答了这里的问题。

于 2016-04-08T16:59:29.390 回答