gpt4 book ai didi

c++ - 即发即弃 std::thread 对象自行清理

转载 作者:行者123 更新时间:2023-11-27 23:43:06 24 4
gpt4 key购买 nike

在实现服务等时,可能需要即发即弃功能,即创建一个线程并将其留给自己的设备。然而,需要将 std::thread 对象保留在某个地方以防止它超出范围,但是当线程完成时没有整洁的 delete this 支持,并且即使有,这也会成为非指针分配的问题。类似地,更高级别的库可能有 Timer 对象,其中可以触发一次性计时器,但在完成后需要清理。

也许可以保存一个 std::threadTimer 对象的集合,然后经常遍历列表并删除已完成的对象,但这似乎很麻烦.是否有一些有用的习惯用法来管理这些类型的临时对象?

我的直接解决方案是结合使用 std::mutexstd::atomic 让我的服务返回 BUSY 所以我只有一个线程,但这感觉就像代码味道

最佳答案

这就是 std::thread::detach() 的用途——如果您希望线程“即发即弃”,那么您可以在创建线程后对其调用 detach。这会导致 std:thread 对象不再引用实际的执行线程,因此您可以销毁 std::thread 并且对执行没有影响。

关于c++ - 即发即弃 std::thread 对象自行清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52886072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com