我想了解线程上的“等待”实际上是如何工作的?幕后是否有无限循环(听起来不合理)?
例如,在“WaitForSingleObject”功能的 MSDN/MFC 手册页中,它说
WaitForSingleObject 函数检查指定对象的当前状态。如果对象的状态是无信号的,则调用线程进入等待状态,直到对象发出信号或超时间隔过去。 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspx)
这个“等待状态”是什么?线程是如何“唤醒”的,即一个事件的上升或一个对象的信号如何导致线程再次运行?谁检查同步对象以及多久检查一次?
谢谢