我正在考虑开发一个应用程序,它将在一台六核机器上运行六个异步任务,每个任务分别运行在一个核心上。
但是是否可能将任务锁定到它们自己的核心上呢?
这个想法是让它们大部分时间自己运行,但有时会通过共享内存区域进行通信。然而,我希望任务尽可能不被干扰地运行。
我正在考虑开发一个应用程序,它将在一台六核机器上运行六个异步任务,每个任务分别运行在一个核心上。
但是是否可能将任务锁定到它们自己的核心上呢?
这个想法是让它们大部分时间自己运行,但有时会通过共享内存区域进行通信。然而,我希望任务尽可能不被干扰地运行。
taskset -c cpunum yourprocess
所需功能完全可以实现。您也可以提供PID,以此来将单个线程分配到特定的CPU上。如果您想从自己的程序中更改CPU亲和性,请使用sched_setaffinity()
。
只是为了记录,另一种不涉及编程的方法: 打开任务管理器,转到进程选项卡,右键单击你的进程并选择设置关联性...