今天项目里写了一个类,大体如下
class T {
public:
void do() {
ptr_->func();
}
void update() {
auto ptr = std::make_shared<IMPL>();
ptr_ = std::move(ptr); //
}
private:
std::shared_ptr<IMPL> ptr_;
};
高并发测试do(),并伴随偶尔的update()。预期是会崩溃的。
但测试结果出乎意料,竟然没逝。
然后想到了移动赋值可能是原子操作,问gpt,得到了肯定结果。