什么是事件驱动编程?

时间:2012-04-25 20:58:27

标签: multithreading process distributed event-driven

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

1 个答案:

答案 0 :(得分:6)

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

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

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

事件驱动编程略有不同,但为了扩展,必须使用线程编程。我可以有一个等待事件/中断的线程,然后处理事件发生时的事情。如果它是真正的单线程,则在处理第一个事件时,任何其他进入的事件都将被阻止或丢失。如果我有一个多线程事件处理模型,那么当事件进入时,其他线程将会被旋转。我正在掩盖所需的生产者/工作者机制,但同样,与你的问题水平没有密切关系。

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

这应该回答你提出的所有问题。 Jonny的第一个评论/观点值得注意 - 更具体地说明你不理解的内容会给你更好的答案。