Multithreading 每一个响应输入的程序都有一个带有无限循环的主线程,这样说准确吗?

Multithreading 每一个响应输入的程序都有一个带有无限循环的主线程,这样说准确吗?,multithreading,algorithm,design-patterns,data-structures,responsive-design,Multithreading,Algorithm,Design Patterns,Data Structures,Responsive Design,我想知道,如果说每个响应程序的核心都有一个像 while not quit if work to do do work 例如: HTTP侦听器/web服务器 用户界面 执行作业的服务 另一种表达我问题的方式: 是否有可能创建一个程序,其中在出现某种类型的刺激(例如鼠标单击、网络请求)之前不执行线程?轮询输入是(或应该是)例外,而不是规则。您的循环: while not quit if work to do do work 是使处理器忙于

我想知道,如果说每个响应程序的核心都有一个像

while not quit
     if work to do
         do work
例如:

  • HTTP侦听器/web服务器
  • 用户界面
  • 执行作业的服务
另一种表达我问题的方式:

是否有可能创建一个程序,其中在出现某种类型的刺激(例如鼠标单击、网络请求)之前不执行线程?

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

while not quit
    if work to do
        do work
是使处理器忙于轮询输入的忙等待

按照大多数程序的编写方式,循环稍作修改:

while not quit
    wait for input
    process input
“等待输入”是一种非忙等待。线程处于可警报的等待状态,这意味着它不消耗任何CPU资源。当线程订阅的事件发生时,该线程将被唤醒,以便它可以处理该事件。然后它又回到睡眠状态

请注意,“处理事件”可以而且经常涉及到旋转另一个线程


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

至少在使用汇编语言时,存在硬件中断的概念:例如,不要在缓慢的CPU上浪费CPU周期,而是检查是否按下了任何按钮,您可以触发一个电气中断,停止CPU并强制它在恢复之前执行您想要的操作。我不确定高级等价物是什么,但它可能存在。我想,事件驱动编程是您在这里想要的词。