我正在设计一个异步记录器类,如下所示。但是,不确定我是否以正确的方式使用了 boost 条件变量。任何人都可以对此发表评论吗?这里的 processLogEntry 方法是一个线程函数,我在这里使用 boost。
void LogWriter::stopThread()
{
mStop = true;
mCond.notify_one();
mThread->join();
}
void LogWriter::processLogEntry()
{
while(!mStop)
{
boost::mutex::scoped_lock lock(mMutex);
mCond.wait(lock);
while(!q.empty())
{
// process begins
}
}
}
void LogWriter::addLogEntry()
{
boost::mutex::scoped_lock lock(mMutex);
// add it in the queue
mCond.notify_one();
}