multithreading - 什么是事件驱动编程?

标签 multithreading process distributed event-driven

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

2年前关闭。




Improve this question




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

最佳答案

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

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

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

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

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

这应该能回答你提出的所有问题。 Jonny 的第一条评论/观点值得一提——对你不理解的内容更具体一些,会给你更好的答案。

关于multithreading - 什么是事件驱动编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323681/

相关文章:

multithreading - Perl线程: Why does the output come by order and not mixed-up?

multithreading - IP扫描程序多线程中的关键部分

c# - 当 Process.Kill() 产生 "access denied"因为进程正在终止时,我该如何处理?

Java Process.waitFor() 与 Process.exitValue()

go - 更好地理解 Kademlia 的 XOR Integer Metric

deep-learning - Pytorch dist.all_gather_object 挂起

java - 如何使用RxJava进行文件解析和SQL生成?

c++ - 是否有 `notify_one()` 的 `std::condition_variable` 队列?

c# - 如何捕获进程的标准输出/错误?

cassandra - Apache Cassandra 是否提供可以用来防止数据破坏(恶意节点)的测量方法?