如果应用程序运行循环中没有事件,我不明白为什么线程必须“休眠”。这是节省能量,记忆还是其他什么?
当来自源输入的事件进入时,它将再次唤醒该线程以处理此事件。之后,它会再次进入休眠状态,因为队列中没有其他事件等待处理。
有人对这个睡眠问题有一个很好的解释吗?
答案 0 :(得分:2)
休眠线程允许OS调度程序(为线程分配CPU时间的子系统)运行其他线程。
答案 1 :(得分:2)
这不是问题。那是一件好事。主线程还会做什么?它不应该处理长时间运行的任务 - 这将减少UI事件进入时UI的“快速”。
在事件发生之前不应该紧密循环 - 这将占用处理器时间,否则其他应用程序可以合理地使用它。
睡觉(或者更确切地说等待)正是你想要它做的 - 所以它可以在它有用的工作时立即醒来,但不会影响系统。
答案 2 :(得分:2)
正如其他人所说,将线程置于睡眠状态允许执行其他线程。
我要补充一点,因为你可能是指iPhone(基于你的大多数其他问题),即使没有其他线程需要运行,这也很有用,因为CPU空闲时CPU功耗会下降。