IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:non-blocking

共 2 篇相关文章

IT 累计浏览 2,093

使用 Mojolicious 写非阻塞的应用: Part 1

这篇讲的是Mojolicious这个Perl Web框架的核心设计理念。作者从“为什么选择Mojolicious”这个常见问题切入,指出其最根本的区别在于从诞生之初就为非阻塞而设计,这让它区别于其他大多数Perl框架。 为了具体说明,文章先展示了Mojolicious简洁高效的模板技术,随后构建了一个连接MongoDB的粘贴应用。作者特意先用开发者更熟悉的阻塞式写法实现,这时所有客户端请求会排队等待数据库操作完成,导致服务器资源利用率低下。这自然引出了阻塞模型的性能瓶颈——单个慢请求会阻塞整个处理流程。 文章的核心在于揭示,当应用切换到Mojolicious的非阻塞模式后,情况将发生质变。服务器可以并发处理多个请求,不会因单个数据库查询而停顿,从而用更少的硬件资源支撑更高的并发量。这对于构建快速、轻量且可扩展的现代Web应用至关重要。

IT 累计浏览 16,676

关于IO的同步,异步,阻塞,非阻塞

这篇讲的是网络IO模型中几个核心但常被混淆的概念:同步、异步、阻塞与非阻塞。作者从一次团队周会的实际讨论出发,发现大家对这些术语的理解各执一词,甚至连常见的技术资料(如Wikipedia)也常将“异步”与“非阻塞”混为一谈。 文章的核心价值在于对这两对概念进行了系统性的对比与澄清。它明确了“同步/异步”关注的是IO操作完成后,通知机制的差异——是由调用方主动检查,还是由内核完成后通知调用方;而“阻塞/非阻塞”描述的则是调用函数后,在数据未就绪时线程是否挂起等待。作者结合Unix系统调用和epoll的实例,分析了它们在不同网络编程模型下的具体表现与组合方式。 通过厘清这些理论上的区别,文章能帮助开发者更准确地理解`select`、`poll`、`epoll`以及异步IO接口(如`aio`)的设计思想与适用场景,这对于编写高性能的网络服务程序很有启发。