我知道可以使用sched_setaffinity将进程(父进程)固定在一个核心上,然后fork的子进程会继承亲缘关系并且也会被固定在同一个核心上。但是,我不想永远将它们固定在同一个核心上。理想情况下,我希望它们能够一直保持在同一个CPU上,即如果操作系统调度程序将父进程迁移,则子进程应该跟随父进程并迁移到与父进程相同的CPU上。
一种可能的方法是使用共享变量,其中父进程定期更新其当前CPU。然后子进程可以定期查找此变量并使用sched_setaffinity迁移到与父进程相同的CPU上。但是,这看起来有点hacky,并且可能涉及它们在单独的CPU上运行的时间段。有更好的方法来实现这一点吗?
一种可能的方法是使用共享变量,其中父进程定期更新其当前CPU。然后子进程可以定期查找此变量并使用sched_setaffinity迁移到与父进程相同的CPU上。但是,这看起来有点hacky,并且可能涉及它们在单独的CPU上运行的时间段。有更好的方法来实现这一点吗?