什么是事件驱动编程,事件驱动编程与线程有什么关系?我是在阅读有关服务器以及它们如何处理用户请求和管理数据的文章时提出这个问题的。如果用户发送请求,服务器开始处理数据,并将状态写入表中。为什么会这样呢?服务器是否停止处理该用户的数据,并开始处理另一个用户的数据,或者每个用户的处理都在不同的线程(多线程服务器)中运行?
发布于 2012-04-26 05:15:54
事件驱动编程!=线程编程,但它们可以(也应该)重叠。
当系统需要“同时”处理多个操作时,就会使用线程编程。我松散地同时使用,因为大多数操作系统都使用分时模型进行线程化活动,或者至少当可用的线程比处理器多时是这样做的。无论哪种方式,都与你的Q无关。
当我需要一个应用程序做两件或更多的事情时,我会使用线程编程--比如从键盘接收用户输入(线程1)和根据接收到的输入运行计算(线程2)。
事件驱动编程略有不同,但为了使其具有可扩展性,它必须利用线程编程。我可以有一个单独的线程来等待事件/中断,然后在事件发生时进行处理。如果它真的是单线程的,那么在处理第一个事件时,传入的任何其他事件都会被阻塞或丢失。如果我有一个多线程的事件处理模型,那么当事件进入时,额外的线程就会旋转起来。我略过了所需的生产者/工人机制,但再次强调,这与您的问题的层次无关。
为什么服务器在接收到事件时会开始处理/存储状态信息?嗯,因为它被设定成。:-)状态处理可能与事件处理相关,也可能与事件处理无关。状态处理是独立于事件处理的主题,就像事件不同于线程一样。
这应该可以回答您提出的所有问题。Jonny的第一个评论/观点值得注意--更具体地说明你不理解的内容会让你得到更好的答案。
https://stackoverflow.com/questions/10323681
复制相似问题