什么是事件驱动编程,并且事件驱动编程和线程有关吗?我看到这个问题是在阅读有关服务器如何处理用户请求和管理数据的文章时产生的。如果用户发送请求,服务器开始处理数据并将状态写入表格。为什么会这样?服务器停止为该用户处理数据并开始为另一个用户处理数据还是每个用户的处理都在不同的线程中进行(多线程服务器)?
什么是事件驱动编程,并且事件驱动编程和线程有关吗?我看到这个问题是在阅读有关服务器如何处理用户请求和管理数据的文章时产生的。如果用户发送请求,服务器开始处理数据并将状态写入表格。为什么会这样?服务器停止为该用户处理数据并开始为另一个用户处理数据还是每个用户的处理都在不同的线程中进行(多线程服务器)?
事件驱动编程 != 线程编程,但它们可以(并且应该)重叠。
当系统需要同时处理多个操作时,使用线程编程。我使用“同时”这个词不是很准确,因为大多数操作系统在有多个线程而处理器不足时会采用时间共享模型。无论如何,这与你的问题无关。
当我需要一个应用程序执行两个或多个任务时就会使用线程编程,例如从键盘接收用户输入(线程1)和基于接收到的输入运行计算(线程2)。
事件驱动编程有所不同,但为了扩展,必须利用线程编程。我可以有一个单线程等待事件/中断,然后在事件发生时处理事物。如果真正是单线程,任何额外的事件都将被阻止或丢失,而第一个事件正在被处理。如果我有一个多线程事件处理模型,那么随着事件的出现,额外的线程将被启动。我略过了所需的生成器/工作机制,但仍然与你的问题无关。
为什么服务器在接收事件时开始处理/存储状态信息?因为它被编程为这样做。:-)状态处理可能与事件处理有关,也可能无关。状态处理是与事件处理不同的主题,就像事件与线程不同一样。
那应该回答了你提出的所有问题。Jonny的第一个评论/观点值得注意——更具体地说明你不理解的内容会获得更好的答案。