【发布时间】:2019-08-13 08:09:55
【问题描述】:
为了多线程安全,std::shared_ptr 使用原子操作来执行引用计数。虽然这很好,但我有以下问题:
- 如果程序是单线程程序,是否有足够聪明的编译器来使用普通(非原子)递增和递减操作?
- 按照上面的问题,如果答案是否定的,有没有办法告诉编译器他的程序是单线程的,所以在编译的时候不要费心使用原子操作?
【问题讨论】:
-
这取决于编译器和标准库,但对于 g++/libstdc++ 参见stackoverflow.com/a/15141844/1135979
标签: c++ multithreading shared-ptr atomic compiler-optimization