我是否需要删除" new"当我知道它已经完成时分配了线程?

时间:2017-05-12 00:39:29

标签: c++ multithreading memory-management dynamic-memory-allocation

考虑以下代码(类的一部分):

void MyClass::foo() {
    //...
    mutex_.lock();
    if (state_ == first) {
        mutex_.unlock();    
        thread_ = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&MyClass::bar, this)))
    }
    mutex_.unlock();
    //...
}

void MyClass::bar() {
    //...
    while (true) {
        //...
        mutex_.lock();
        if (state_ == last) {
            mutex_.unlock();
            state_ = first;
            break;
        }
        mutex_.unlock();
        //...
    }
}

此代码确保每当thread_被指定为指向新线程时,前一个线程就已经完成(或者,在第一次,根本没有启动)。

此代码是否可以防止内存泄漏/是否有我错过的内容?我不确定已经完成的线程是否需要使用delete解除分配。

0 个答案:

没有答案