如果我调用我的主函数std::this_thread::sleep_for(std::chrono::seconds(1))
并创建2个线程(使用std::thread
)并且我有1个cpu核心。
在此期间是否有任何上下文切换到主线程?或者也许仅在1秒之后会有上下文切换到主线程?
我不知道它是如何运作的......我认为有两种可能性:
1)系统多次切换到主上下文,之后检查时间是否结束并切换,什么也不做,切换到另一个线程 2)系统中断在时间结束时切换上下文
答案 0 :(得分:0)
AFAIK它取决于操作系统的调度程序实现。但是现在的现代操作系统非常聪明,可以将明确请求临时暂停的线程放在不同的队列中,这样就不会安排它占用CPU。
所以,
在此期间是否有任何上下文切换到主线程?
没有
或者可能仅在1秒后将上下文切换到main 线程?
是的,1秒或更长时间后。