从linux内核中产生

Joh*_*ohn 5 linux multithreading real-time scheduled-tasks

我在Linux(3.4)中有一个实时线程.在某些条件下,我希望它将控制权放弃到具有相同优先级的其他线程,即使它还没有完成使用其当前时间片.我在考虑使用以下代码:

if (condition) {
    resched_task();
    cond_resched();
}
Run Code Online (Sandbox Code Playgroud)

但是,我没有看到代码中有其他人这样做,让我觉得还有其他(更好的?)方式.有没有标准的方法来做到这一点?

Typ*_*eIA 9

您可以使用sched_yield()函数生成剩余的时间片,如此处所述.

sched_yield()使调用线程放弃CPU.线程被移动到队列的末尾以获得其静态优先级,并且新线程可以运行.