我正在创建一个将字符串记录到文件中的异步类。我应该在类本身中创建线程吗?我在想这样的事情作为启动功能
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 次,thread_log 会被覆盖或发生冲突)。