我正在编写一个需要在单核上运行的程序。要将它绑定到单核,我使用#include <stdio.h>
#include <unistd.h>
#define _GNU_SOURCE
#include <sched.h>
int main()
{
unsigned long cpuMask = 2;
sched_setaffinity(0, sizeof(cpuMask), &cpuMask);
printf("Hello world");
//some other function calls
}
,但编译器发出警告:
var alpha = parameters.alpha;
我的测试代码是:
context.fillStyle = clearColor.getStyle();
你能帮我解决一下吗?实际上代码是经过编译和运行的,但我不确定它是在单核上运行还是在切换内核。
我正在使用Ubuntu 15.10和gcc版本5.2.1
答案 0 :(得分:8)
您需要将#define _GNU_SOURCE
移至顶部。在man sched_setaffinity
中它说:
#define _GNU_SOURCE /* See feature_test_macros(7) */
在man 7 feature_test_macros
中说:
注意:为了有效,必须定义功能测试宏 在包含任何头文件之前。这可以在 编译命令(cc -DMACRO = value)或通过定义宏 包含任何标题之前的源代码。
所以在一天结束时你的代码应该是这样的:
#define _GNU_SOURCE
#include <stdio.h>
#include <unistd.h>
#include <sched.h>
int main()
{
unsigned long cpuMask = 2;
sched_setaffinity(0, sizeof(cpuMask), &cpuMask);
printf("Hello world");
//some other function calls
}