我在运行多个线程的应用程序上工作,一个线程最重要,并且必须在最强的cpu上运行。我已使用c ++函数sched_setaffinity成功将此线程附加到所选的cpu。
syscallres = syscall(__NR_sched_setaffinity, pid, sizeof(cpu_set), &cpu_set)
;
在我的android设备上,第一个CPU最强,另外3个较弱,最后4个节能。首先是最强大的,并且始终处于启用状态,但是基于文档,cpu可能会睡眠并且必须唤醒,然后再将线程附加到cpu上,实际上,基于此处stackoverflow上的帖子,人们在睡眠时无法将线程固定到cpu。我无法在设备上模拟它,我总是成功地将线程附加到所选择的cpu上,也许这取决于操作系统。所以我的问题是,在我打电话给“ sched_setaffinity”之前,正确的启动cpu的方法是什么?