C++11 很容易实现线程安全的多参数log语法

就像

myLogger("who are you?", "I'm ZRH", "I'm in thread:", std::this_thread::get_id());
myLogger(1, "+", 2u, "=", "3");

多个thread输出形如:

2016-04-16 10:54:54 who are you? I'm ZRH I'm in thread: 6736

2016-04-16 10:54:54 1 + 2 = 3

2016-04-16 10:54:54 who are you? I'm ZRH I'm in thread: 13528

2016-04-16 10:54:54 1 + 2 = 3

2016-04-16 10:54:54 who are you? I'm ZRH I'm in thread: 3036

2016-04-16 10:54:54 1 + 2 = 3

用到了

  • 括号 操作符重载

  • C++11 chrono, iomanip 获取和格式化输出时间戳;

  • C++11 lock_guard, 保证一条log记录是线程安全的;

  • C++11 variadic template, 这样就可以做到随意的参数个数和参数类型(当然,要保证参数的可打印,比如有 << 操作符实现);

  • C++11 list initialization, braced-init-list, 列表初始化的形式顺序打印log,这比递归实现好多了;
    原文链接: https://www.cnblogs.com/rhzhang/p/5397913.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/231990

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午3:15
下一篇 2023年2月13日 下午3:15

相关推荐