我有一个代码库,它使用以下模式在几个地方创建ad-hoc线程:
operator new
创建一个结构,其中包含线程想要使用的“东西”。CreateThread()
API。new
。delete
它。这有效,但有几个问题:
CreateThread
失败的情况实际上是正确的。我认为std::shared_ptr
可能是解决方案,例如在步骤1中将new
替换为std::make_shared
。但这似乎还有其他问题:
std::shared_ptr
的同一个实例可以用在另一个帖子中吗?CreateThread
的函数在线程proc开始之前退出,那么它是使用悬空指针怎么办?有人能建议一种更优雅,更安全的方法吗?我能想到的唯一另一个选择是有一个包装CreateThread
并且std::shared_ptr
作为成员的类,然后将lamba称为线程proc?