当在线程中调用 time.sleep 时,处理器内部会发生什么?

What happens inside the processor when time.sleep is invoked in a thread?

提问人:Asnim P Ansari 提问时间:4/20/2020 更新时间:4/20/2020 访问量:43

问:

为什么我们在多线程程序中使用 time.sleep,以及执行此指令时 CPU 中会发生什么

多线程并 与语言无关

评论


答:

2赞 mevets 4/20/2020 #1

time.sleep 是 python(或其他应用程序语言)结构,而不是 CPU 指令。通常,类似睡眠的系统调用用于告诉调度程序,在提供的纪元到来之前(经过的时间段或绝对时间过去)您不希望执行。调度程序将通过使调用线程在该纪元之前没有资格执行来执行您的命令;同时,如果无事可做,它可能会运行其他线程或自行闲置。

当纪元到来时,它通常通过中断传递,这使调度程序有机会使线程有资格再次运行。如果调度程序认为合适,线程可能会立即开始执行;否则,它将不得不等待轮到它。