是否可能建议内核立即切换到不同的线程,跳过调度器逻辑?
例如,如果我刚刚使用clone
创建了一个线程/进程,并且希望立即开始执行它,立即放弃当前上下文,而不是等待内核重新安排任务的下一次时间。
理想情况下,我正在寻找与Mach内核上的thread_switch
调用完全相同的东西。
是否可能建议内核立即切换到不同的线程,跳过调度器逻辑?
例如,如果我刚刚使用clone
创建了一个线程/进程,并且希望立即开始执行它,立即放弃当前上下文,而不是等待内核重新安排任务的下一次时间。
理想情况下,我正在寻找与Mach内核上的thread_switch
调用完全相同的东西。
你不应该试图控制上下文切换,因为内核很可能比你更清楚何时进行上下文切换。特别是由于缓存失效等原因,上下文切换被认为是一项昂贵的操作。
但是,如果你真的需要强制进行调度周期,可以使用sched_yield()
系统调用。
sched_yield
只会强制当前线程离开CPU,没有保证下一个要运行的线程是原帖作者想要运行的线程。 - mtvecpthread_yield()
函数(在Linux上调用sched_yield()
)。 - Alexis Wilke