我正在考虑开发一个应用程序,它将在六核计算机上运行六个异步任务,每个核心一个。
但是可以将任务锁定到自己的核心吗?
这个想法是让他们自己主要运行,但有时通过共享内存区域进行通信。但是,我希望任务尽可能不受干扰地运行。
答案 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)
仅为记录,另一种方法,不涉及编程: 打开任务管理器,转到进程选项卡,右键单击您的进程并选择设置亲和力...