C++ 转发引用 August 31, 2024 字数统计:1067 C++ 11 发明右值引用后,结合模板带来了一个优雅的参数传递方案即万能引用。许多教程使用“引用折叠”来描述模板在实例化 T&& 的行为(例如之前的文章右值引用和完美转发),但实际上这并不准确。作为库作者,可能还需要更接近真相。 C++ 异常 - 守卫 July 29, 2024 字数统计:4311 前几篇文章讲述了异常的基本概念和如何保证基本的异常安全,本文则综合并且结合最佳实践讲述如何编写正确的 C++ 代码。 One exception to rule them all January 20, 2024 字数统计:1625 本文简单讨论了不同高级编程语言如何表达以及处理错误,并介绍了 C++ 中新的解决方案。 Programming Language Memory Models April 19, 2023 字数统计:14737 这是 Go 语言现任领队 Russ Cox 在 2021 年写的文章 Programming Language Memory Models 的翻译。本文是第二篇,重点阐述了 C++ 和 Java 对内存模型设计的历史,以及 ECMAScript 2017 的初步尝试。 Programming Language Memory Models April 19, 2023 字数统计:11082 这是 Go 语言现任领队 Russ Cox 在 2021 年写的文章 Programming Language Memory Models 的英文原版的备份。本文是第二篇,重点阐述了 C++ 和 Java 对内存模型设计的历史,以及 ECMAScript 2017 的初步尝试。 Hardware Memory Models April 19, 2023 字数统计:6665 这是 Go 语言现任领队 Russ Cox 在 2021 年写的文章 Hardware Memory Models 的英文原版的备份。本文是第一篇,重点阐述了几个流行的 ISA(指令集架构)中如何实现缓存同步;第二篇则是总结了常见的支持多线程的语言中同步设施(内存模型)的设计;第三篇则讲述了 Go 的内存模型,Go 的内存模型已经于去年正式发布。 硬件内存模型 April 19, 2023 字数统计:11045 这是 Go 语言现任领队 Russ Cox 在 2021 年写的文章 Hardware Memory Models 的翻译,虽然我对 Go 没什么兴趣,但在网上大概没有更好的从软件工程师的角度对多 CPU(现在也叫做多线程,或者多核心)架构并发编程的进行全面总结的文章了,因此在此提供中文版本。本文是第一篇,重点阐述了几个流行的 ISA(指令集架构)中如何实现缓存同步;第二篇则是总结了常见的支持多线程的语言中同步设施(内存模型)的设计;第三篇则讲述了 Go 的内存模型,Go 的内存模型已经于去年正式发布。