假设我在多线程环境中调用函数时只记录1个整数,那么实现此机制的最佳设计是什么?例如:什么是记录极少量数据的最有效方式?
void foo1() {
log(1);
...
}
void foo2() {
log(2);
...
}
以下是可能的方式:
- 只需登录到使用
fprintf()
文件。 问题: 为了记录1个整数而调用 函数是不是一个昂贵的操作?纠正我,如果我错了。 - 将记录的整数存储到数组缓冲区中;并定期刷新到文件中。 问题:如果线程崩溃,则进程将停止所有线程。所以可能,我可能会丢失很多最后的日志信息。
对高效日志记录机制有何建议?
不使用开源日志框架的特殊原因? – 2012-03-09 14:06:34
您应该首先担心同步访问日志文件,这可能比性能更重要。 – 2012-03-09 14:07:59
回复@Als up,这里是你可以/应该使用的C++日志框架列表:http://stackoverflow.com/questions/696321/best-logging-framework-for-native-c – 2012-03-09 14:12:47