文字列をファイルに記録する非同期クラスを作成しています。クラス自体の中でスレッドを作成する必要がありますか? 起動関数としてこんなものを考えていました
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 が上書きされるか、競合が発生します)。