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

标签:Continuation

共 2 篇相关文章

IT 累计浏览 2,729

尾递归与Continuation

这篇文章从一个常见的编程痛点——递归深度受限——出发,引出了两个紧密相关又层次不同的概念:尾递归与 Continuation。作者清晰地解释道,尾递归本质上是一种针对特定代码模式的编译器优化,它能将递归调用在尾部位置时转化为循环,从而避免栈溢出,常用于函数式编程语言中处理深层递归。但其优化范围仅限于尾调用位置,控制流的延续仍然是隐式的。 文章更核心的部分在于探讨 Continuation。通过 CPS(Continuation-Passing Style)转换,作者展示了如何将“程序接下来要做什么”这个隐含的控制流,显式地表示为一个可传递、可存储的“一等对象”。Continuation 能统一表达顺序执行、循环、异常甚至跳转,它将控制权交给了程序员。 两者的根本差异随之浮现:尾递归是对线性控制流的一种实现层优化,而 Continuation 则是对程序控制流本身进行建模的一种强大语言原语。文章用具体的代码示例对比了它们的表达能力,最终让读者理解,Continuation 提供了一种更根本、更灵活的控制流操控视角。这对于理解程序如何“执行”、如何管理流程至关重要。

IT 累计浏览 3,535

关于 Jetty Continuation

这篇讲的是 Jetty 服务器中一个名为“Continuation”的机制。在早期的 Servlet 规范不支持异步处理的背景下,Jetty 通过这个机制解决了在长轮询(Long Polling)或 Comet 场景中,线程资源被长时间等待的请求阻塞的问题。 文章详细拆解了 Continuation 的核心工作流程:它允许一个请求的处理线程主动挂起自己,释放回线程池,而底层的连接则被保持。当后续事件到达时,再由服务器重新唤醒处理线程来完成响应。这个“挂起-恢复”的模型,巧妙地让一个线程能够服务于多个先后到达的请求,极大降低了服务器在高并发、慢连接场景下的资源开销。 作者还对比了 Continuation 与后来 Servlet 3.0 标准化异步处理(AsyncContext)的异同,并指出 Continuation 作为 Jetty 的私有扩展,其设计思想影响了后续的规范。对于需要维护或理解 Jetty 老版本系统的工程师来说,这篇文章清晰地阐明了这一历史特性的设计初衷和实现精髓。