日志程序在一个单独的c++线程中
Logger in a separate C++ thread?
在深度循环中进行日志记录时,是否存在允许在当前线程中生成日志消息,然后从另一个线程将其写入磁盘的日志记录器?
由于在磁盘上写入是最长的操作,因此这应该可以提高日志记录器的效率。
或者由于缓存的原因,差异可以忽略不计?
将操作排队等待另一个线程处理,然后立即返回的日志记录器(实际上是任何程序)称为异步的。异步日志记录器确实存在。这是我用过的一个:g2log。它是跨平台的,并在windows和linux上进行了测试。
异步日志记录是否对你有任何好处,取决于你记录了多少东西
您在哪里登录?窗户吗?Linux ?
如果您正在使用Linux,并且在一个对性能非常敏感的环境中工作,您可以看看ltng。有一个FOSDEM Talk (Youtube)是关于他们的日志记录方法的。它的本质是:不记录字符串,而是记录错误代码和参数到(共享)内存,并使用单独的进程将日志写入磁盘(映射到另一个进程的共享内存在核心转储中存活)。
另一个异步记录器来自POCO库:
http://pocoproject.org/docs/Poco.AsyncChannel.html相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 用C++在单独的头文件中完成函数体
- 类模板的成员功能的定义在单独的TU中完全专业化
- 如何使用单独文件中的派生类访问友元函数对象
- CoInitialize()在单独的线程上崩溃而不返回
- avrogencpp能为模式中的每种类型生成单独的头文件吗
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- 单独定义模板化嵌套类方法的正确语法
- 如何将 2 个类分成单独的 .h 文件并正确设置它们
- C++ 链接到单独的.cpp文件说"multiple definitions"
- 从单独的文件中读取树
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- C++计算器,不能单独除以 0
- 自 Windows 10 20H1 以来,具有单独线程的多个窗口停止工作
- 当结构位于单独的头文件中时'unregistered datatype'在 QML 中出现Q_GADGET错误
- 通过单独的 tcp 流建立 http 连接
- Cmake:为 C 设置警告级别,并为 MSVC 单独设置C++代码(Visual C++)
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 如何从单独的线程控制 SFML 窗口?
- C++泛型类,单独实现?