我想使LinearLayout
成为线程安全的,因此可以像这样使用它
operator<<
我面临的问题是,每个传递的参数都调用log << string << number << object;
,所以我不能像这样锁定operator<<
,因为在退出时另一个线程占用了互斥体。
operator<<
我也不能因为死锁而将此方法锁定。
答案 0 :(得分:0)
您可以使运算符<<
返回“ locked-logger”类的实例,该实例也支持运算符<<
,并且将在行尾被销毁(并释放锁)。但这是不可取的,因为其他程序员可能会觉得很奇怪。
最好编写一个接受任意数量参数的模板方法。此外,流式传输不是格式化的良好抽象-您最好检查fmt
库(其主要方法format
已合并到C ++ 20中)。您应该将记录器的周围放在fmt
之上,而不是用彩带。