C++ 中的异步线程安全日志记录

2024-04-18

我正在寻找一种在我的 C++ 项目中进行异步和线程安全日志记录的方法(如果可能的话)到一个文件。我目前正在使用cerr and clog对于任务,但由于它们是同步的,因此每次记录某些内容时执行都会短暂暂停。这是一个图形相对较多的应用程序,所以这种事情相当烦人。

新的记录器应该使用异步 I/O 来消除这些暂停。线程安全也是可取的,因为我打算很快添加一些基本的多线程。

我考虑过每线程一个文件的方法,但这似乎会让管理日志成为一场噩梦。有什么建议么?


我注意到这个 1 年前的帖子。也许我编写的异步记录器可能会让人感兴趣。

http://www.codeproject.com/KB/library/g2log.aspx http://www.codeproject.com/KB/library/g2log.aspx

G2log 使用受保护的消息队列将日志条目转发给慢速磁盘访问的后台工作人员。

我已经尝试过使用无锁队列,这增加了 LOG 调用的平均时间,但减少了最坏情况下的时间,但是我现在使用受保护的队列,因为它是跨平台的。它在 Windows/Visual Studio 2010 和 Ubuntu 11.10/gcc4.6 上进行了测试。

它作为公共领域发布,因此您可以用它做您想做的事,没有任何附加条件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中的异步线程安全日志记录 的相关文章

随机推荐