說我有下面的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