我编写了以下方法,该方法基本上从另一个线程连续写入的日志文件中读取最新行。此代码在不同的线程上运行并由计时器驱动(每 5 秒触发一次)。这很简单。这是它的样子:
void FileManager::ReadFile()
{
std::vector<std::string> vecLines;
std::string line;
m_InputStream.clear();
while (std::getline(m_InputStream, line))
{
vecLines.push_back(line);
}
if (! vecLines.empty())
{
OnFileUpdate(vecLines);
}
}
我的问题,这段代码安全吗?基本上,我执行的算法是提前打开输入流并查找文件末尾。然后当这个方法被调用时,如果有任何新的行要读取,那么它们将被读取到这里。如果有任何新行,则将通知该类的任何感兴趣的客户(通过 OnFileUpdate() 调用)。