1

文字列をファイルに記録する非同期クラスを作成しています。クラス自体の中でスレッドを作成する必要がありますか? 起動関数としてこんなものを考えていました

void Async_Log::start (void)
{
  std::thread thread_log(
    [&]()
    {
      std::ofstream fout;
      fout.open(fileName);
      while(true)
      {
        if(q.size())
        {
          std::lock_guard<std::mutex> lock(m);
          fout << q.front() <<  "\t At Time: " << std::clock() << std::endl;
          q.pop();
        }
      }
      fout.close();
    });
}

または、スレッドをメインのままにしておく方がよいでしょうか。私の最初の懸念は、スレッド化が一意であるかどうかです (したがって、2 つの異なるファイルでクラスを 2 回インスタンス化すると、thread_log が上書きされるか、競合が発生します)。

4

1 に答える 1