changkun / modern-cpp-tutorial

📚 Modern C++ Tutorial: C++11/14/17/20 On the Fly | https://changkun.de/modern-cpp/
https://changkun.de/modern-cpp/
MIT License
24.07k stars 3k forks source link

RAII 不是一种语法,第七章描述错误 #283

Closed Mq-b closed 5 months ago

Mq-b commented 5 months ago

web 位置

原文:

std::mutex 是 C++11 中最基本的 mutex 类,通过实例化 std::mutex 可以创建互斥量, 而通过其成员函数 lock() 可以进行上锁,unlock() 可以进行解锁。 但是在实际编写代码的过程中,最好不去直接调用成员函数, 因为调用成员函数就需要在每个临界区的出口处调用 unlock(),当然,还包括异常。 这时候 C++11 还为互斥量提供了一个 RAII 语法的模板类 std::lock_guard。

RAII(Resource Acquisition Is Initialization)并不是一种语法,而是一种 C++ 编程技术(或者说是一种设计方式)。此处存在误导,应该将“RAII 语法”改为“RAII 机制”或者“RAII 模式”。

也就是:“C++11 还为互斥量提供了一个 RAII 机制的模板类 std::lock_guard”。

如有更好的措辞可再提,不过至少“RAII 语法”完全不正确。

changkun commented 5 months ago

Thanks and PR welcome