当完成任务所需的处理量会引起其他线程等待一段长度过长的时间时,线程在预先确定的点中止。用于这些长时间运行的任务的代码包括处理中的策略点上对让步函数的调用。当线程执行这些任务之一时,它会在遇到让步函数调用时让步。然后,就绪队列中的其他线程将有机会运行。当下一次轮到原来的线程时,该线程将在对让步函数进行调用后立即重新在点上执行代码。对中止函数的预先确定的调用将允许数据库服务器在对性能最有利的点上中断线程。
当线程无法再继续它的任务时,它也会中止直到出现某种条件。例如,当线程等待磁盘 I/O 完成时、当等待来自客户机的数据时或当等待一个锁定或其他资源时,线程中止。
图: 上下文切换:虚拟处理器如何从一个线程切换到另一个线程