CppCoreGuidelines CP.32 在不关联的线程间共享所有权用 shared_ptr
02 July 2023
“To share ownership between unrelated threads use shared_ptr
”
理由
如果线程不相关联(比如不在一个作用域范围,或一个在另一个的生命周期内),而且它们需要共享某些自由存储区的内存,这些内存空间后续需要删除。那么
shared_ptr
是唯一能确保安全删除的方式。
注意
- 可以共享静态对象(比如全局的),因为它不属于任何线程,即无需某个线程负责删除它。
- 一个自由存储区的对象,不需要删除的话,可以共享。
- 一个对象术语某个线程,只要第二个线程存活时间不超过第一个个线程,也可以个安全的共享。