我有一个场景,其中创建为shared_ptr
的对象是资源,而某些步骤必须等到这些资源完全释放。
shared_ptr
具有成员函数use_count()
,但依赖于此将意味着循环检查效率不高。
将shared_ptr
包装在另一个用自定义删除器构造它的类中是不是一个好主意,该自定义删除器设置了这个包装器的用户可以等待的事件标志(使用condition_variable
)?
或者,创建我自己的shared_ptr是否有意义只是添加了这样的wait_for_released()
功能?
答案 0 :(得分:1)
您可能会使用由拥有资源的对象锁定的互斥锁 - 它们可以从析构函数中释放互斥锁。服务员等待互斥锁而不是与共享指针直接相关的任何内容。