我正在利用C++和Boost开展多面方案。 我正在利用一个帮助者,热切地启动资源。 如果我抹掉了底线,而且所有对read线的提及都超出了范围,我是否泄露了任何资源? 或者,表面清扫本身(即它充斥了自己所需的系统资源)吗?
从我能看到的(以及我8年前的读物中回顾的)数字来看,不需要明确“底线”要求。
我希望read忙地实施,当有时间使用资源时,我将检查是否发生了错误。 粗略的法典范围可以看一看:
//Assume this won t get called frequently enough that next_resource won t get promoted
//before the thread finishes.
PromoteResource() {
current_resource_ptr = next_resource_ptr;
next_resource_ptr.reset(new Resource());
callable = bind(Resource::Initialize, next_resource); //not correct syntax, but I hope it s clear
boost::thread t(callable);
t.start();
}
当然,我的理解是,正常的记忆处理问题依然存在(删除目标、处理不公等)。 我只需要确认,表面本身是“ak”。
Edit: 澄清问题,我希望确保,在技术上,这种秘密不泄漏:
void Run() {
sleep(10 seconds);
}
void DoSomething(...) {
thread t(Run);
t.run();
} //thread detaches, will clean itself up--the thread itself isn t a leak ?
在10秒之后,我就清理了某些事情,但我想绝对肯定。