std :: this_thread :: sleep_for - 上下文是否切换到此线程?

时间:2016-10-11 13:13:39

标签: c++ multithreading c++11 stdthread

如果我调用我的主函数std::this_thread::sleep_for(std::chrono::seconds(1))并创建2个线程(使用std::thread)并且我有1个cpu核心。

在此期间是否有任何上下文切换到主线程?或者也许仅在1秒之后会有上下文切换到主线程?

我不知道它是如何运作的......我认为有两种可能性:

1)系统多次切换到主上下文,之后检查时间是否结束并切换,什么也不做,切换到另一个线程 2)系统中断在时间结束时切换上下文

1 个答案:

答案 0 :(得分:0)

AFAIK它取决于操作系统的调度程序实现。但是现在的现代操作系统非常聪明,可以将明确请求临时暂停的线程放在不同的队列中,这样就不会安排它占用CPU。
所以,

  

在此期间是否有任何上下文切换到主线程?

没有

  

或者可能仅在1秒后将上下文切换到main   线程?

是的,1秒或更长时间后。