知识卡片
RAII绑定退出动作
内容
RAII 将资源或收尾责任交给局部对象,使作用域正常返回或异常退出时通过析构执行清理。它保证路径覆盖,但不替你决定正确策略;线程包装器仍须选择 join 或 detach,并考虑阻塞或悬垂访问。
参考来源
- 位置:《Effective Modern C++》第7章《并发API》,条款三十七:使 std::thread 在所有路径最后都不可结合(源文件:_epub-src/EPUB/text/ch008.xhtml)
- 结论依据:原文用局部析构覆盖每条退出路径解释RAII,再以线程收束说明策略不能被机制取代。
- 原始内容:每当你想在执行跳至块之外的每条路径执行某种操作,最通用的方式就是将该操作放入局部对象的析构函数中。这些对象称为 RAII对象 ( RAII objects ),从 RAII类 中实例化。(RAII全称为 “Resource Acquisition Is Initialization”(资源获得即初始化),尽管技术关键点在析构上而不是实例化上)。RAII类在标准库中很常见。比如STL容器(每个容器析构函数都销毁容器中的内容物并释放内存),…