用户级线程如何不执行?

时间:2015-10-28 13:49:03

标签: multithreading scheduler

我理解,对于内核级线程,有一个因达到某个循环计数而导致的中断,即发出信号要求内核根据调度程序执行所需的上下文切换到另一个线程。

在我对用户级线程的理解中,在多对一模型中,用户线程的调度完全在用户空间中完成。内核只是调度已映射到的内核线程用户级线程。

我的问题是,在#34之后我无法理解该位;控件已被转移到某个用户级线程"。如何停止执行调度程序以使控制返回以执行所需的上下文切换并选择另一个执行的线程?我不确定在用户级线程中是否有任何定时器寄存器用于引起中断。

那么用户级调度程序又如何获得控制权呢?

请赐教。

1 个答案:

答案 0 :(得分:0)

有趣的事情(多么真实的巧合)我昨天在回家的路上一直在为此制定答案。真实的。

答案是用户级线程必须提供控制权。只有内核级线程才能被抢占。这种控制可以通过调用yield()之类的函数显式地发生 - 或通过调用任何其他知道如何转移控制的函数来隐式地发生。那些很可能是线程同步函数。