我发现当我使用这样的东西时:
pthread_t thread_1, thread_2;
pthread_create (&thread_1, NULL, (void *) function_1, NULL);
pthread_create (&thread_2, NULL, (void *) function_2, NULL);
thread_1和thread_2都在同一个逻辑CPU中执行。
如何让它们在不同的逻辑CPU中执行?
感谢。
答案 0 :(得分:0)
pthread_setaffinity_np(3)
允许您将线程的CPU关联掩码设置为CPU集。
示例:强>
int s, j;
cpu_set_t cpuset;
pthread_t thread;
thread = pthread_self();
/* Set affinity mask to include CPUs 0 to 7 */
CPU_ZERO(&cpuset); for (j = 0; j < 8; j++)
CPU_SET(j, &cpuset);
s = pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset); if (s != 0)
handle_error_en(s, "pthread_setaffinity_np");
pthread_getaffinity_np
返回线程的CPU关联掩码。
注意:此功能不可移植。
答案 1 :(得分:0)
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,
cpu_set_t *cpuset);
我认为这些功能可以帮到你。阅读本文档: enter link description here