mirror of
https://github.com/CnTransGroup/EffectiveModernCppChinese.git
synced 2025-03-29 05:20:14 +08:00
item16 completed...
This commit is contained in:
parent
7fc0b8cd72
commit
9372a2e31a
@ -184,4 +184,14 @@ private:
|
||||
|
||||
```
|
||||
|
||||
现在,这个条款是基于,多个线程可以同时在一个对象上执行一个const成员函数这个假设的。如果你不是在这种情况下编写一个const成员函数。也就是你可以保证在对象上永远不会有多个线程执行该成员函数。再换句话说,该函数的线程安全是无关紧要的。比如,为单线程使用而设计类的成员函数的线程安全是不重要的。在这种情况下你可以避免,因使用 `mutex` 和 `std::atomics`所消耗的资源,以及包含它们的类只能使用移动语义带来的副作用。然而,这种单线程的场景越来越少见,而且很可能会越来越少。可以肯定的是,const成员函数应支持并发执行,这就是为什么你应该确保const成员函数是线程安全的。
|
||||
|
||||
> 应该注意的事情
|
||||
>
|
||||
> + 确保const成员函数线程安全,除非你确定它们永远不会在临界区(concurrent context)中使用。
|
||||
> + `std::atomic`可能比互斥锁提供更好的性能,但是它只适合操作单个变量或内存位置。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user