作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
如果可能的话,我正在寻找一种在我的 C++ 项目中进行异步和线程安全日志记录的方法。我目前正在为该任务使用 cerr
和 clog
,但由于它们是同步的,因此每次记录某些内容时执行都会暂停。这是一个相对图形繁重的应用程序,所以这种事情很烦人。
新的记录器应该使用异步 I/O 来消除这些暂停。线程安全也是可取的,因为我打算很快添加一些基本的多线程。
我考虑过一种每个线程一个文件的方法,但这似乎会使管理日志成为一场噩梦。有什么建议吗?
最佳答案
我注意到这个 1 岁以上的帖子。也许我写的异步记录器可能会感兴趣。
http://www.codeproject.com/KB/library/g2log.aspx
G2log 使用 protected 消息队列将日志条目转发到慢速磁盘访问的后台工作程序。
我已经尝试过使用无锁队列来增加 LOG 调用的平均时间,但减少了最坏情况的时间,但是我现在正在使用 protected 队列,因为它是跨平台的。它在 Windows/Visual Studio 2010 和 Ubuntu 11.10/gcc4.6 上进行了测试。
它已作为公共(public)领域发布,因此您可以随意使用它而无需附加任何条件。
关于c++ - C++ 中的异步线程安全日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2930258/
我是一名优秀的程序员,十分优秀!