STM:为什么 Rust 和 Go 没有把它作为核心并发机制?
从 STM 的事务模型出发,对比 Haskell、Rust 与 Go 的并发设计哲学,重点解释 Rust 所有权、Borrowing、Send/Sync 与共享状态边界,并分析 STM 的优势、限制与系统设计价值。
个人博客
关于软件、系统设计与持续学习。文章由 Notion 写作并在这里发布。
目前已发布 307 篇文章。
筛选结果
共 29 篇
从 STM 的事务模型出发,对比 Haskell、Rust 与 Go 的并发设计哲学,重点解释 Rust 所有权、Borrowing、Send/Sync 与共享状态边界,并分析 STM 的优势、限制与系统设计价值。
在 Haskell 中,fmap 是 Functor 类型类(type class)里最核心的函数,用来把一个普通函数“映射”到“容器”或“上下文”中去
本章总结内容包括: • 了解libraries使用的一种独特二进制格式 • 使用 ByteString 编写工具批量处理二进制数据 • 使用 Text 类型处理 Unicode 数据 • 构建一个执行复杂 I/O 任务的大型程序的结构
在阅读完第 25 课后,你将能够: • 使用 ByteString 类型高效地处理二进制数据。 • 通过使用 ByteString.Char8 将 ByteString 视为常规 ASCII 字符串。 • 使用 Haskell 对 JPEG 图像进行故障处理(glitch)。 • 处理二进制 Unicode 数据。
在阅读完第 24 课后,你将能够: • 在 Haskell 中使用文件句柄。 • 从文件读取和写入文件。 • 理解惰性求值在 I/O 方面的局限性。
在阅读完第 23 课后,你将能够: • 使用 Text 类型进行更高效的文本处理。 • 使用语言扩展改变 Haskell 的行为。 • 使用常见的文本函数进行编程。 • 使用 Text 类型正确处理 Unicode 文本。
在阅读完第 22 课后,你将能够: • 访问命令行参数。 • 使用传统的 I/O 交互方式。 • 使用惰性求值编写 I/O 代码,使 I/O 更容易。
主题索引