我有一个数据结构'FileEntry',它内部有一个'Buckets'向量,这两个都存储为共享指针。当我的文件条目指针被破坏时,Buckets的析构函数也会按预期调用,完成所有清理工作。
我定时清理操作进行一些性能测量并发现一些奇怪的事情,我的存储桶指针清理只需要240和202毫秒,但我的完整文件清理时间为1768毫秒。
Completed cleanup for bucket : sessions 240 Completed cleanup for bucket : logs 202 Completed cleanup for fileentry : 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();
}
我在这做什么错?我如何查看背景中发生的事情?