从linux内核中产生

时间:2014-02-13 16:57:45

标签: linux multithreading scheduled-tasks real-time

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

if (condition) {
    resched_task();
    cond_resched();
}

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

2 个答案:

答案 0 :(得分:7)

您可以使用sched_yield()函数生成剩余的时间片as discussed here

  

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

答案 1 :(得分:1)

问题听起来像是在询问内核编程,但接受的答案是函数用户模式API sched_yield()。我认为这个问题的核心答案是schedule()