我想知道说每个响应式程序的核心是否像
这样的主线程是否正确while not quit
if work to do
do work
示例:
另一种表达我问题的方式:
是否可以创建一个没有线程执行的程序,直到有某种类型的刺激(例如鼠标点击,网络请求)?
答案 0 :(得分:2)
轮询输入是(或应该)是例外而不是规则。你的循环:
while not quit
if work to do
do work
忙碌的等待使处理器忙于轮询输入。
大多数程序的编写方式,循环略有修改:
while not quit
wait for input
process input
“等待输入”是一个非忙碌的等待。线程处于可警告的等待状态,这意味着它不消耗任何CPU资源。当线程订阅的事件发生时,线程被唤醒,以便它可以处理事件。然后又回去睡觉了。
请注意,“处理事件”可以并且经常涉及启动另一个线程。
所以,是的:在有某种类型的刺激之前,可以创建一个没有线程执行的程序。这是目前大多数应用程序的标准,包括HTTP侦听器,GUI应用程序和系统服务。