6

什么是事件驱动编程,事件驱动编程与线程有什么关系?我来到这个问题阅读有关服务器以及它们如何处理用户请求和管理数据的信息。如果用户发送请求,服务器开始处理数据并将状态写入表中。为什么呢?服务器是否停止为该用户处理数据并开始为另一个用户处理数据或每个用户的处理在不同的线程(多线程服务器)中运行?

4

1 回答 1

7

事件驱动编程!= 线程编程,但它们可以(并且应该)重叠。

当系统需要“同时”处理多个动作时,使用线程编程。我同时使用松散,因为大多数操作系统对线程活动使用时间共享模型,或者至少当线程多于可用处理器时它们会这样做。无论哪种方式,都与您的 Q 无关。

当我需要一个应用程序来做两件事或更多事情时,我会使用线程编程——比如从键盘接收用户输入(线程 1)并根据接收到的输入(线程 2)运行计算。

事件驱动编程有点不同,但为了使其扩展,它必须利用线程编程。我可以有一个线程等待事件/中断,然后在事件发生时处理事情。如果它真的是单线程的,那么在处理第一个事件时,任何进入的额外事件都会被阻塞或丢失。如果我有一个多线程事件处理模型,那么随着事件的到来,额外的线程将被启动。我在掩饰所需的生产者/工作者机制,但同样,与你的问题水平无关。

为什么服务器在收到事件时开始处理/存储状态信息?好吧,因为它被编程为。:-) 状态处理可能与事件处理相关,也可能不相关。状态处理是独立于事件处理的主题,就像事件不同于线程一样。

这应该回答你提出的所有问题。Jonny 的第一条评论/观点值得留意 - 更具体地说明您不了解的内容将为您提供更好的答案。

于 2012-04-25T21:15:54.267 回答