gpt4 book ai didi

c++ - 如何安全地删除析构函数中的线程指针?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:01 25 4
gpt4 key购买 nike

例如,我有一个 C++ 类,其中包含一个线程指针作为成员变量。线程一直运行直到程序退出。 如果我在析构函数中删除指针,那一刻线程似乎还没有完成?管理这个或任何技巧的最佳实践是什么?

示例代码:

class Car {
public:
Car();
~Car();
private:
boost::thread *m_runningThreadPtr;
};


Car::Car() {
m_runningThreadPtr = new boost::thread();
}

Car::~Car() {
delete m_runningThreadPtr; // The thread should be still running now.
// Problematic if it was deleted here?
}

最佳答案

默认情况下,如果线程仍在运行,析构函数将调用 terminate() 来终止线程,这是否安全取决于线程当时正在做什么。如果您想等待线程完成,您可以在删除它之前调用 join(),并使用某种同步系统(即使只是一个全局标志)告诉线程退出。

关于c++ - 如何安全地删除析构函数中的线程指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26335822/

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