gpt4 book ai didi

c++ - 删除对象后退出包含对象指针的线程的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-04 15:48:24 25 4
gpt4 key购买 nike

在我的 C++ 类中,我创建了一个线程并将指针 this 指向该线程。现在某个地方这个对象被删除了。我希望线程在对象被删除后退出。

一种方法是使用 try-catch。每当我发现异常时,我都会退出线程。但这有点像黑客。

最佳答案

Now somewhere this object is getting deleted. I want the thread to exit after object is deleted.

这是完全倒退的。您想要做的是通知线程以某种方式退出并让线程清理对象本身。换句话说,“主”线程和“工作”线程之间必须存在某种协作。

这是因为线程本身可能希望在退出之前能够对对象做一些事情,如果你删除它然后导致线程退出,你的程序几乎肯定会死于访问违规异常(exception)。

考虑使用 boost::thread ,它内置了对协作线程取消的支持。线程将使用 interruption points 之一定期检查何时退出。 ,执行任何必要的清理。这样,“主”线程就不必处理对象本身的删除问题,它只需向线程发出退出信号,它就会自行处理(假设您正确实现了这一点)。

关于c++ - 删除对象后退出包含对象指针的线程的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12793999/

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