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 次 |
最近记录: |