mxd*_*ois 5 c++ multithreading smart-pointers lock-free c++11
以下操作是否可以锁定std::unique_ptr和/或std::shared_ptr?
read(*myPtr)或myPtr->getSomething()std::move(myUniquePtr)或当std::shared_ptr超出范围时.就我而言,我不会同时从多个线程访问这些指针.我只是好奇我是否可以在高优先级,无锁线程上专门使用它们.由指针管理的对象在高优先级回调之前由主线程分配,并且在回调停止之前不会被释放.
谢谢!
通过合理的实施,您可以假设:
std :: unique_ptr:
std :: shared_ptr:
std::atomic<std::size_t>(可以使用成员函数进行检查is_lock_free).标准所说的只是对于shared_ptr<>(20.7.2.2/4“类模板shared_ptr”):
的更改
use_count()并不反映可能引入数据竞争的修改
它并没有说这些更改use_count()必须是无锁的。该标准允许使用互斥锁来防止数据竞争。
unique_ptr<>没有承诺防止数据竞争(它本身并不是线程安全的)。
| 归档时间: |
|
| 查看次数: |
1138 次 |
| 最近记录: |