我有一个包含一个BYTE*
,一个引用计数器和一个CRITICAL_SECTION
的类,该类可以防止它们同时访问。
我想用std::tr1::shared_ptr<BYTE>
替换所有内容。 MSDN说:
一切听起来不错,直到我发现该类的CRITICAL_SECTION
在其外部用于“锁定”它并以互斥的方式更改其内容。好的,它破坏了封装,我想更改它。
我知道shared_ptr
保证将释放内存,但是当您写入内存时,它是否保证互斥?
最佳答案
您可以确保正确访问std::tr1::shared_ptr
指向的数据。这些数据是您的。仅在需要删除std::tr1::shared_ptr
时才重要。
关于std::tr1::shared_ptr
对象本身,您具有以下保证:
shared_ptr
的shared_ptr
的不同实例进行变异。 任何其他同时访问(例如同时读取和写入同一实例)都是未定义的行为。
还要注意,新的C++ 11标准中的ojit_code具有用于原子访问的特殊API。
关于c++ - std::tr1::shared_ptr是否互斥?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7182100/