Erlang的精髓:并非轻量级进程和消息传递,而是行为模式

2025-04-11

本文重新审视了Erlang编程语言的核心思想。作者认为,Erlang的成功并非仅仅依赖于其轻量级进程和消息传递机制,更重要的是其独特的“行为”(behaviours)模式。行为模式类似于其他语言中的接口,它提供了一组预定义的函数签名,开发者只需实现这些签名即可获得并发、容错等高级功能。这使得开发者可以专注于业务逻辑,而无需处理底层并发细节。文章通过gen_server、gen_event、supervisor等行为模式的例子,阐述了其在构建可靠分布式系统中的重要性,并探讨了如何在其他语言中借鉴Erlang的行为模式思想,最终提升软件的可靠性和可测试性。

阅读更多
开发

像托马斯·杰斐逊一样调度线程

2024-09-25

本文探讨了如何跨流水线队列调度工作线程以最小化总处理时间,以及这种调度方式与托马斯·杰斐逊之间出乎意料的联系。作者提出了一种算法,通过计算将可用工作线程分配到不同阶段的所有可能配置的得分,并选择得分最低的配置来实现最佳调度。该算法考虑了每个阶段的输入队列长度、平均服务时间和已分配的工作线程数量。作者还将其方法与杰斐逊在议会中分配席位的算法进行了比较,发现两者之间存在惊人的相似之处。

阅读更多

基于属性测试库的现状

2024-07-04

文章分析了当前基于属性测试库的现状,指出多数库缺乏对状态机模型和并行测试的支持。作者认为,状态机模型的学习曲线和开源模式的局限性是造成这一现状的原因。文章以计数器、循环缓冲区、水壶谜题和进程注册表为例,展示了如何使用伪对象作为模型,简化状态机模型的编写,并通过合约测试保证伪对象的可靠性。作者认为,这种方法可以降低基于属性测试的学习曲线,并提高测试效率。

阅读更多