【发布时间】:2011-02-10 09:09:09
【问题描述】:
我有一个 operator<< 重载的日志记录类。所以我可以这样做:
oLogger << "Log this" << " and this" << " and " << 10 << endl;
oLogger`<< "Something else" << endl;
记录器执行此操作没有任何问题。但是,我希望在线程之间共享记录器对象。然后,我不希望它打印出这样的内容:
//LogFILE
Log this and this Something else
and 10
所以,我需要锁定整个operator<<s 链。我猜这可以用 RAII 来完成,我还没有考虑太多。与此同时,是否有任何传统的方式来完成这项工作? (除了用操纵器结束输入?)
【问题讨论】:
-
您的记录器线程安全吗?如果是这样,您可能只需将字符串放在一边(考虑类似:stackoverflow.com/questions/469696/…)并记录单个
std::string,但一般情况下,请遵循 @Nim 的建议并锁定。
标签: c++ multithreading method-chaining