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

时间:2011-03-29 22:00:41

标签: c linux api

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

但是可以将任务锁定到自己的核心吗?

这个想法是让他们自己主要运行,但有时通过共享内存区域进行通信。但是,我希望任务尽可能不受干扰地运行。

4 个答案:

答案 0 :(得分:7)

您正在寻找的概念称为“线程亲和力”。它是如何实现的以及要求它的接口是特定于操作系统的。

在Linux下,尝试sched_setaffinity()。 glibc也可能提供pthread_attr_setaffinity_np()。

答案 1 :(得分:5)

taskset -c cpunum yourprocess

做你想要的。 可以改为提供PID,这样就可以将单线程设置为cpu。如果要更改自己程序中的cpu关联,请使用sched_setaffinity()

答案 2 :(得分:4)

不锁定,但可以将cpu affinity与流程相关联

答案 3 :(得分:0)

仅为记录,另一种方法,不涉及编程: 打开任务管理器,转到进程选项卡,右键单击您的进程并选择设置亲和力...