c – 增强共享指针:跨多个线程同时读取访问

前端之家收集整理的这篇文章主要介绍了c – 增强共享指针:跨多个线程同时读取访问前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个线程A,它分配内存并将其分配给共享指针.然后,该线程产生3个其他线程X,Y和Z,并将共享指针的副本传递给每个线程.当X,Y和Z超出范围时,释放内存.但是有可能2个线程X,Y在完全相同的时间点超出范围并且在引用计数上存在竞争条件,因此不是将其递减2,而是仅递减一次.所以,现在引用计数更新为0,因此存在内存泄漏.请注意,X,Y和Z仅读取内存.不写入或重置共享指针.长话短说,引用计数是否存在竞争条件,是否会导致内存泄漏?

解决方法

其他几个人已经提供了文件链接,说明这是安全的.

有关绝对无可辩驳的证据,请参阅Boost Smartptr如何在boost / smart_ptr / detail / sp_counted_base_gcc_x86.hpp(或您平台的相应文件)中从头开始实际实现自己的互斥锁.

原文链接:https://www.f2er.com/c/117354.html

猜你在找的C&C++相关文章