我正在尝试使用boost为多线程c ++代码创建一个记录器。这是我的代码:
class logger
{
private:
boost::mutex logMtx;
public:
logger()
{
}
~logger()
{
}
void logString(string z)
{
boost::mutex::scoped_lock lock(logMtx);
std::cout<<z<<std::endl;
std::cout.flush();
}
};
然后我与多个线程共享一个实例(实例在创建其他线程之前在主线程中创建)并调用logString函数进行日志记录。它似乎不起作用。有些行被截断(整个字符串不打印 - 即如果我通过“abcd”它有时打印“bcd”。)
这种方法有问题吗?