go 官方版本的日志模块为什么加锁那么多

Titanarthas · · 3447 次点击
加锁主要是为了复用写日志的内存buffer,减轻内存压力,每条日志一次buffer申请只会加重内存分配器和gc的负担。另外你是怎么测试的,所有协程调完Printf之后就算结束了?如果是这样的话,日志都还在channel里面。按理来说都是串行写入,差别没有那么大。
#7
更多评论
一个好的日志库非常难的,比如你写的代码就没有确保日志一定会写入到文件,你可以查看一下glog是如何实现的。你msgChan是无缓存的,如何确保不阻塞?
#1
你说的这些问题我都处理了,缓存是配置文件里面可配置。exit函数可以确保写入文件。
#2