我正在创建一个将字符串记录到文件中的异步类。我应该在类本身内创建线程吗?我在想这样的事情作为一个开始功能
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();
});
}
或者将线程保留为main更好。我首先要关注的是线程是否唯一(因此,如果我使用两个不同的文件将类实例化2次,则会覆盖thread_log或发生冲突)。