线程安全运算符<<

时间:2020-06-22 04:04:05

标签: c++ thread-safety mutex

我想使LinearLayout成为线程安全的,因此可以像这样使用它

operator<<

我面临的问题是,每个传递的参数都调用log << string << number << object; ,所以我不能像这样锁定operator<<,因为在退出时另一个线程占用了互斥体。

operator<<

我也不能因为死锁而将此方法锁定。

1 个答案:

答案 0 :(得分:0)

您可以使运算符<<返回“ locked-logger”类的实例,该实例也支持运算符<<,并且将在行尾被销毁(并释放锁)。但这是不可取的,因为其他程序员可能会觉得很奇怪。

最好编写一个接受任意数量参数的模板方法。此外,流式传输不是格式化的良好抽象-您最好检查fmt库(其主要方法format已合并到C ++ 20中)。您应该将记录器的周围放在fmt之上,而不是用彩带。