如何在C程序中指定在单个内核上运行?

如何在C程序中指定在单个内核上运行?,c,core,C,Core,我想写一个C程序,它将执行“任务集--cpu列表0./program args…”的等效操作。也就是说,由fork()创建的父进程和所有子进程将在单个核心上运行。我正在阅读sched setaffinity(2),但根据文档,它将进程分配给一个CPU关联掩码,即可能有多个内核的处理器。(如果我错了,请纠正我) 有什么办法吗?没有,CPU在这里是与CPU核心的同义词。不是很精确的语言,同意。什么操作系统?知道这一点很重要。这里我们所说的CPU核心是指Core执行SMT等操作的情况下的“硬件线程”。

我想写一个C程序,它将执行“任务集--cpu列表0./program args…”的等效操作。也就是说,由fork()创建的父进程和所有子进程将在单个核心上运行。我正在阅读sched setaffinity(2),但根据文档,它将进程分配给一个CPU关联掩码,即可能有多个内核的处理器。(如果我错了,请纠正我)
有什么办法吗?

没有,
CPU
在这里是与
CPU核心的同义词。不是很精确的语言,同意。什么操作系统?知道这一点很重要。这里我们所说的
CPU核心
是指
Core
执行SMT等操作的情况下的“硬件线程”。顺便问一下:对于提供线程控制的硬件,有没有一个公认的词?也许是CPU。。。因为,一般来说,我们认为一个(软件)线程由操作系统分配资源,包括RAM、CPU等。但是,如果一个核心是一个或多个CPU,我们怎么称呼一个或多个核心呢?也许处理器是一个更好的名字。。。所以我们有一个CPU,有一个或多个内核,每个内核提供一个或多个处理器?我有一个AMD Threadripper 2920X,它是一个CPU,有12个超线程内核,提供24个处理器。可以使用setaffinity()选择每个处理器-它将位于单个执行单元上。在线提供。