我正在尝试在我的Linux机器上定期在我的C程序中指定的特定CPU上运行进程。我不知道如何在程序中指定进程需要运行的特定CPU。
我一直在阅读有关在命令行上执行此操作的方法,但我在C本身的程序中找不到如何执行此操作。
我知道task_struct
目录中有include/linux/sched.h
。在检查结构时,我看到有关CPU的多个字段。但我正在阅读(To access PCB of process in C)访问任务/流程信息不建议或容易。
我也正在阅读“当前”宏,但我不确定这是否与我的问题相关。
我的程序非常简单,基本上只是一个测试,显示我如何在某个CPU上定期运行任务。
有谁知道如何完成这个简单的规范?
你要做的事情叫做线程钉扎。
看起来你想要sched_setaffinity。您可以使用getpid()
系统调用从应用程序内部调用它。
#include <sched.h>
int sched_setaffinity(pid_t pid, size_t cpusetsize,
const cpu_set_t *mask);
int sched_getaffinity(pid_t pid, size_t cpusetsize,
cpu_set_t *mask);