diff --git a/3.MovingToModernCpp/item16.md b/3.MovingToModernCpp/item16.md index c17f8e9..65e8147 100644 --- a/3.MovingToModernCpp/item16.md +++ b/3.MovingToModernCpp/item16.md @@ -184,4 +184,14 @@ private: ``` +现在,这个条款是基于,多个线程可以同时在一个对象上执行一个const成员函数这个假设的。如果你不是在这种情况下编写一个const成员函数。也就是你可以保证在对象上永远不会有多个线程执行该成员函数。再换句话说,该函数的线程安全是无关紧要的。比如,为单线程使用而设计类的成员函数的线程安全是不重要的。在这种情况下你可以避免,因使用 `mutex` 和 `std::atomics`所消耗的资源,以及包含它们的类只能使用移动语义带来的副作用。然而,这种单线程的场景越来越少见,而且很可能会越来越少。可以肯定的是,const成员函数应支持并发执行,这就是为什么你应该确保const成员函数是线程安全的。 + +> 应该注意的事情 +> +> + 确保const成员函数线程安全,除非你确定它们永远不会在临界区(concurrent context)中使用。 +> + `std::atomic`可能比互斥锁提供更好的性能,但是它只适合操作单个变量或内存位置。 + + + +