我在Linux(3.4)有一个实时线程。 在某些情况下,即使它没有完成当前时间片的使用,我也希望它将控制权交给具有相同优先级的其他线程。 我正在考虑使用下面的代码:
if (condition) { resched_task(); cond_resched(); }
然而,我没有看到代码中的其他人这样做,让我觉得有一些其他(更好?)的方式做到这一点。 有没有一个标准的方法来做到这一点?
您可以使用sched_yield()函数来产生时间片的其余部分, 如此处所述 。
sched_yield()会导致调用线程放弃CPU。 线程被移动到队列的末尾以获得其静态优先级,并且新的线程开始运行。
这个问题听起来像是关于内核编程的问题,但是接受的答案是函数用户模式API sched_yield()。 我认为这个问题的内核答案是schedule()