原子共享指针

时间:2019-07-13 13:29:06

标签: c++ multithreading boost c++17

我正在多线程处理大量代码(gcc 7.4,c ++ 17),并且在访问std::shared_ptr时偶然发现了许多竞争条件。
我尝试使用boost::atomic_shared_ptr,但是代码的某些关键部分从函数返回了共享指针,或者在其他类的构造函数中使用了共享指针,boost::atomic_shared_ptr不支持(复制构造函数和赋值运算符是私有的)。
我还有其他3条建议:
-将所有使用互斥量访问共享指针的地方包裹起来,但这对我来说似乎太过分了。
-创建我的atomic_shared_pointer实现。
-使用std::atomic_store / std::atomic_load

示例:

auto result = someFunc(*obj);

resultsomeFunc在此示例中无关紧要,objstd::shared_ptrObject。这条线导致竞争状况。 我知道用互斥体包装所有内容都是有效的解决方案,但这是很多代码,我正在寻找更优雅的解决方案。

0 个答案:

没有答案