1

我有一个数据结构'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();
    }

我在这里做错了什么?我如何检查后台发生的事情?

4

0 回答 0