news 2026/6/14 7:30:35

24、线程编程:事件驱动、并发、竞争与同步

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
24、线程编程:事件驱动、并发、竞争与同步

线程编程:事件驱动、并发、竞争与同步

1. 事件驱动线程

在现代编程中,事件驱动模式是对每个连接一个线程模式的一种改进。以 Web 服务器为例,现代硬件在计算能力上能够同时处理大量请求。但在每个连接一个线程的模式下,这意味着会创建大量线程。线程存在固定开销,特别是需要内核和用户空间栈。这些固定开销限制了给定进程中线程的可扩展性,在 32 位系统上尤为明显(虽然在 64 位系统上,对每个连接一个线程模式的反对理由没那么强烈,但事件驱动模式仍被认为是更好的选择)。系统可能有足够的计算资源来处理数千个并发连接,但在运行这么多并发线程时会遇到可扩展性瓶颈。

系统设计师发现,大多数线程大部分时间都在等待,比如读取文件、等待数据库返回结果、发起远程过程调用等。实际上,使用比系统处理器数量更多的线程并不能提高并行性,这种多线程的使用更多是一种编程抽象,而这种编程便利性可以通过更正式的控制流模型来实现。

基于这些观察,事件驱动线程应运而生。由于每个连接一个线程的工作负载中有很多时间是在等待,我们可以将等待操作与线程解耦。具体做法是异步发出所有 I/O 请求(异步 I/O),并使用多路复用 I/O 来管理服务器中的控制流。在这个模型中,请求处理被转换为一系列异步 I/O 请求和相关的回调函数。这些回调函数可以通过多路复用 I/O 进行等待,这个过程称为事件循环。当 I/O 请求返回时,事件循环将回调函数交给一个等待的线程。

与每个连接一个线程的模式一样,事件驱动模式不一定需要多线程。实际上,事件循环可以是单线程进程执行完回调函数后的自然流程。只有在需要真正的并行性时才添加线程,并且线程数量不应超过处理器数量。

目前,事件驱动模式是设计多线程服务器的首选方法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 1:58:54

什么是云桌面?一般都用哪些云桌面?

随着数字化时代的快速发展,云计算技术逐渐渗透到各行各业,其中云桌面作为一种创新的工作与学习方式,正受到广泛关注。它不仅提升了资源利用效率,还增强了数据安全性和访问灵活性。特别是在教育领域,结合人工智能技术的…

作者头像 李华
网站建设 2026/6/12 19:42:11

什么是云原生

云原生是一种现代化的软件开发和部署方法,旨在充分利用云计算的优势,提高应用程序的可伸缩性、弹性和可靠性。 云原生的详细定义包括云原生计算基金会(Cloud Native Computing Foundation,CNCF)的官方定义和延伸含义。…

作者头像 李华
网站建设 2026/6/12 21:27:10

如何在Kafka中使用SSL/TLS证书认证

在 Kafka 中配置 SSL/TLS 证书认证(核心是双向认证,客户端验证 broker、broker 验证客户端)需完成证书准备、Broker 配置、客户端配置三大核心步骤,以下是详细实操指南(基于 Kafka 2.8,JKS 格式证书&#x…

作者头像 李华
网站建设 2026/6/13 20:46:36

最新网络安全行业入门全指南:前景、方向与实战学习路径

最新网络安全行业入门全指南:前景、方向与实战学习路径 在数据即资产的今天,网络安全早已不是黑客攻防的小众领域 ——2025 年国内网络安全人才缺口突破350万,渗透测试、安全研发等岗位起薪比普通 IT 岗位高 20%,3 年经验工程师年…

作者头像 李华
网站建设 2026/6/12 23:14:25

AI 如何改变 IT 行业:从工具到伙伴的深刻变革

引言 在过去的几年里,人工智能(AI)已经从科幻概念迅速演变为 IT 行业的核心驱动力。2025 年,我们看到 AI 不再是锦上添花的功能,而是深度融入开发、运维、安全、数据等几乎所有领域的底层技术。AI 的广泛应用正在重塑 IT 从业者的日常工作,既带来了效率的飞跃,也改变了…

作者头像 李华