Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法将进程锁定到CPU?_C_Linux_Api - Fatal编程技术网

有没有办法将进程锁定到CPU?

有没有办法将进程锁定到CPU?,c,linux,api,C,Linux,Api,我正在考虑开发一个应用程序,它将在六核机器上运行六个异步任务,每个核心上运行一个 但是,有可能将任务锁定到它们自己的核心吗 其想法是让它们大部分由自己运行,但有时通过共享内存区域进行通信。但是,我希望任务尽可能不受干扰地运行。不锁定,但可以将进程与关联 taskset -c cpunum yourprocess 做你想做的事。 可以提供PID,通过这种方式,您可以将单线程设置为cpu。如果要从自己的程序中更改cpu相关性,请使用sched_setaffinity()您要查找的概念称为“线程相关

我正在考虑开发一个应用程序,它将在六核机器上运行六个异步任务,每个核心上运行一个

但是,有可能将任务锁定到它们自己的核心吗


其想法是让它们大部分由自己运行,但有时通过共享内存区域进行通信。但是,我希望任务尽可能不受干扰地运行。

不锁定,但可以将进程与关联

taskset -c cpunum yourprocess
做你想做的事。
可以提供PID,通过这种方式,您可以将单线程设置为cpu。如果要从自己的程序中更改cpu相关性,请使用
sched_setaffinity()

您要查找的概念称为“线程相关性”。它的实现方式和要求它的接口是特定于操作系统的


在Linux下,试试看。glibc还可以提供pthread_attr_setaffinity_np()。

仅用于记录,另一种方法,不涉及编程:
打开“任务管理器”,进入“流程”选项卡,右键单击您的流程并选择“设置关联…”

问题被标记为Linux-您不能假设连鼠标都连接上了,更不用说一个带有“任务管理器”的完整gui了@Mat您完全正确。无论如何,这可能会对其他人有所帮助。在决定每个任务应该在哪个cpu上运行方面,您真的确定自己会比调度程序做得更好吗?:-)@不,不确定,但我有很好的预感。原因是有6件事要做,它们应该尽可能不间断地异步运行。