我有一个数据结构'FileEntry',它内部有一个'Buckets'向量,这两个都存储为共享指针。当我的 fileentry 指针被破坏时, Buckets 的析构函数也会按预期调用,所有的清理工作都在这里完成。
我定时清理操作以进行一些性能测量,发现一些奇怪的事情,我的存储桶指针清理只花了 240 和 202 毫秒,但我的完整文件网络清理需要 1768 毫秒。
已完成存储桶清理:会话 240 已完成存储桶的清理:日志 202 已完成文件条目清理:1768
我使用 boost::thread_group,桶在其上执行它们的工作,一旦两个桶都完成,文件网络就会被清除。主线程等待桶线程完成。
这是两个析构函数的代码
FileEntry::~FileEntry()
{
Timer timer("Completed cleanup for fileentry");
this->_buckets.clear();
}
Bucket::~Bucket()
{
Timer timer("Completed cleanup for bucket");
this->_sessions.clear();
this->_meta_lookup.clear();
this->_unique_meta.clear();
this->_writer.reset();
}
我在这里做错了什么?我如何检查后台发生的事情?