Linux 任务集和sched_setaffinity之间的交互

Linux 任务集和sched_setaffinity之间的交互,linux,affinity,Linux,Affinity,谁能告诉我如果我跑了会发生什么 taskset -c 7 ./fred.x 但是在fred.x内部,一个线程正在调用sched_setaffinity来绑定到核心6 该线程会获得任何cpu时间,还是会无限期地保持空闲状态?taskset本身调用sched_setaffinity(),然后execve运行您的命令。因此,这个问题归结为“如果我在同一个线程中调用sched_setaffinity()两次会发生什么?”答案是,第二次调用会覆盖第一次调用 因此,在您的特定示例中,调用sched_set

谁能告诉我如果我跑了会发生什么

taskset -c 7 ./fred.x
但是在
fred.x
内部,一个线程正在调用
sched_setaffinity
来绑定到核心6


该线程会获得任何cpu时间,还是会无限期地保持空闲状态?

taskset
本身调用
sched_setaffinity()
,然后
execve
运行您的命令。因此,这个问题归结为“如果我在同一个线程中调用
sched_setaffinity()
两次会发生什么?”答案是,第二次调用会覆盖第一次调用


因此,在您的特定示例中,调用
sched_setaffinity()
的线程实际上将绑定到core 6,并且它将是可运行的。

我发誓我应该编写一个脚本,以拾取新帖子和更改或重新格式化随机选择。我的意思是,3分钟并不是一个快速的转变。好像大家都没看。谢谢你的及时回复。据我所知,taskset影响进程,sched_setaffinity影响线程。只要你向我保证这两件事不可能有两个不重叠的核心亲和力,你就明白了
taskset
只需为您调用
sched\u setaffinity()
。它“影响进程”,因为程序启动时只有一个线程。之后在程序中执行的操作与
任务集
无关,也不可能是这样,因为一旦
任务集
调用
execve
,任务集代码就不再运行了——进程正在运行。