什么是事件驱动编程,事件驱动编程与线程有什么关系吗?我在阅读有关服务器以及它们如何处理用户请求和管理数据时遇到了这个问题。如果用户发送请求,服务器开始处理数据并将状态写入表中。为什么会这样?服务器是否停止处理该用户的数据并开始处理其他用户的数据,或者每个用户的处理在不同的线程(多线程服务器)中运行?
事件驱动编程 != 线程编程,但它们可以(并且应该)重叠。
当系统需要"同时"处理多个操作时,使用线程编程。 我同时松散地使用,因为大多数操作系统对线程活动使用分时模型,或者至少当线程多于可用处理器时,他们会这样做。 无论哪种方式,都与您的Q无关。
当我需要应用程序执行两项或更多操作时,我会使用线程编程 - 例如从键盘接收用户输入(线程 1)并根据收到的输入运行计算(线程 2)。
事件驱动编程略有不同,但为了使其扩展,它必须利用线程编程。 我可以有一个线程来等待事件/中断,然后在事件发生时处理事情。 如果它确实是单线程的,则在处理第一个事件时,传入的任何其他事件都将被阻止或丢失。 如果我有一个多线程事件处理模型,那么随着事件的进入,额外的线程将被启动。 我正在掩盖所需的生产者/工人机制,但同样,与您的问题水平无关。
为什么服务器在收到事件时开始处理/存储状态信息? 好吧,因为它被编程为。 :-) 状态处理可能与事件处理相关,也可能不相关。 状态处理是独立于事件处理的主题,就像事件与线程不同一样。
这应该回答你提出的所有问题。 强尼的第一条评论/观点值得注意 - 更具体地说明你不理解的内容会给你更好的答案。