dar*_*mos 1 c++ windows shared-ptr mutual-exclusion
我有一个包含a BYTE*,一个引用计数器的类,CRITICAL_SECTION它保护它们不受并发访问的影响.
我想用一个替换所有这些std::tr1::shared_ptr<BYTE>.在MSDN说:
多个线程可以同时读写不同的shared_ptr对象,即使这些对象是共享所有权的副本也是如此.
一切听起来都没问题,直到我发现CRITICAL_SECTION课堂外的东西用来"锁定"它并以互相排斥的方式改变它的内容.好吧,它打破了封装,我想改变它.
我知道shared_ptr保证内存将被释放,但是当你写入内存时它是否保证互斥?
您可以确保正确访问std::tr1::shared_ptr要点的数据.那些数据是你的.它只std::tr1::shared_ptr对删除它的时间很重要.
关于std::tr1::shared_ptr对象本身,您有以下保证:
shared_ptr多个线程,即使实例是拷贝(共享相同的引用计数或其他);任何其他同时访问(如同时读取和写入同一实例)是未定义的行为.
另请注意,shared_ptr新的C++ 11标准中有一个特殊的原子访问API.
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |