item16 completed...

This commit is contained in:
windski 2018-12-22 22:22:15 +08:00
parent 7fc0b8cd72
commit 9372a2e31a

View File

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