说我有下面的C程序运行:如何强制交流计划,在一个特定的核心
#include <stdio.h>
int main()
{
printf("Hello world \n");
getchar();
return 0;
}
gcc 1.c -o helloworld
,并说我有一个双核的机器:
cat /proc/cpuinfo | grep processor | wc -l
现在的问题是,当我们执行程序时,我们该如何强制这个程序运行在core-0(或任何其他特定的核心)?
如何以编程方式执行此操作?例子,api的,代码引用会有帮助。
如果没有可用的api,那么是否有任何编译时间,链接时间,加载时间这样做的方式?
OTOH,如何检查程序是运行在core-0还是core-1(或任何其他内核)?
这不在C的范围内。您必须检查操作系统的文档以查看操作系统是否暴露了这样的功能。 –
在Linux下,您可以使用taskset设置亲缘关系,我也同意Kerrek认为这更像是一个操作系统问题 –
虽然之后您可以使用taskset设置启动的进程的核心关联,但他明确要求api以及如何执行它以编程方式 – hirschhornsalz