智能指针share_ptr是半线程安全的,share_ptr包含引用计数和对象读取两部分,其中引用计数控制采用的是原子操作,是安全无锁的;而对象的读取不是线程安全的,所以如果多个线程读取同一个share_ptr的话是需要加锁的,或者使用全局非成员原子操作函数访问, 如: std::atomic_load(), atomic_store()。C++20引入了原子智能指针std::atomic_shared_ptr 和std::atomic_weak_ptr保证了对象读取也是线程安全的。
2 3

相关推荐

牛客网
牛客企业服务