码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-04-16 12:32:38      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

就像

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,这比递归实现好多了;

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

标签:

原文地址:http://www.cnblogs.com/rhzhang/p/5397913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!