我们知道同步日志记录,将日志消息写入文件,然后继续执行程序。异步记录器队列日志消息并将它们写入单独的线程。我开始在我的项目中实现Log4CPlus,我想起了一些事情。异步记录器是否真的有助于提高性能?
我无法初始化更多的LogObjects,因为这会打开更多的文件句柄,我们不需要它。 (我知道我们应该使用基于特征的日志记录对象,例如UploadLogObj,DownloadLogOb,WebReqLogObj,AuthLogObj等)。希望每个添加的日志对象都可能会增加日志记录线程。
仍然是参数,如果我使用单个日志对象并从多个线程推送日志消息,我想必须有一些互斥锁来防止写入消息队列。我的问题不会这个互斥锁减慢进程,它不会造成性能问题..?
我只是想知道如何异步记录器的工作,我可以看看代码,这是一种方法。但希望这些答案对许多人都有启发。
你可以使用一个无锁队列,比如'boost :: lockfree :: queue'。 – Zeta
异步记录器在另一个线程中完成** IO任务**。 – Jarod42