【发布时间】:2018-06-05 11:51:08
【问题描述】:
我正在使用 Poco::Thread。
std::list<Thread*> threads;
for(int i=0;i<100;i++){
Thread* t=new Thread();
RunnableClient* r=new RunnableClient(); //this class has run method()
threads.push_back(t);
t.start(*r);
}
std::list<Thread*>::iterator it;
for (it = threads.begin(); it != threads.end(); ++it){
if((*it)->isRunning() == false){
threads.erase(it,it);
}
}
上述函数中使用的 erase() 方法只是删除对对象的引用,但不会释放分配给 Thread 对象的空间。如何释放分配给 Thread 对象的空间?
【问题讨论】:
-
通常在线程上有一个
join()或detach()方法。检查文档。此外,您可能希望将其存储在std::unique_ptr中,以便在不再引用它时进行清理。
标签: c++ multithreading poco