是否准确地说每个响应输入的程序都有一个带有无限循环的主线程?

时间:2018-04-13 14:46:09

标签: multithreading algorithm design-patterns data-structures responsive-design

我想知道说每个响应式程序的核心是否像

这样的主线程是否正确
while not quit
     if work to do
         do work

示例:

  • HTTP侦听器/网络服务器
  • 用户界面
  • 执行作业的服务

另一种表达我问题的方式:

是否可以创建一个没有线程执行的程序,直到有某种类型的刺激(例如鼠标点击,网络请求)?

1 个答案:

答案 0 :(得分:2)

轮询输入是(或应该)是例外而不是规则。你的循环:

while not quit
    if work to do
        do work

忙碌的等待使处理器忙于轮询输入。

大多数程序的编写方式,循环略有修改:

while not quit
    wait for input
    process input

“等待输入”是一个非忙碌的等待。线程处于可警告的等待状态,这意味着它不消耗任何CPU资源。当线程订阅的事件发生时,线程被唤醒,以便它可以处理事件。然后又回去睡觉了。

请注意,“处理事件”可以并且经常涉及启动另一个线程。

所以,是的:在有某种类型的刺激之前,可以创建一个没有线程执行的程序。这是目前大多数应用程序的标准,包括HTTP侦听器,GUI应用程序和系统服务。