我想了解线程上的“等待”实际上是如何工作的?幕后是否存在无限循环(听起来不合理)?
例如,在 MSDN/MFC 手册页的“WaitForSingleObject”函数中,它说
WaitForSingleObject 函数检查指定对象的当前状态。如果对象的状态为无信号状态,则调用线程将进入等待状态,直到对象收到信号信号或超时间隔已过。 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspx)
这个“等待状态”是什么?线程如何“唤醒”,即事件或对象信号如何导致线程再次运行?谁检查同步对象以及多久检查一次?
谢谢
我想编写一个获得数字X的函数,如果X = 5则返回7,如果X = 7则返回5,否则返回其他内容.有一些简单的方法 - 使用"if"块另一种方式 - 使用地图(5映射到7,7映射到5)第三种方式 - 写出匹配的线性数学方程式但是我正在寻找第4种方式这样做(再次 - 根本不使用"if"块).
感觉我需要使用位操作,但我在这方面不占优势,所以我需要帮助.
有任何想法吗?
谢谢!