多进程同时写一个日志文件,如何保证并发安全?
首先单条日志体积可能很大,短则 1 Bytes,多则 1024TB
我看到有些方式是使用文件锁,但是文件是一个很慢的东西,锁又是一个很慢的东西,把这两个很慢的东西结合在一起使用,那速度不是很感人吗
我自己设计了一个库:总体思路是3个线程和一个任务队列,一个前台线程充当生产者,两个后台线程。这两个后台线程又有生产者和消费者,生产者后台线程负责与前台线程交换Buffer,并把【持久化Buffer】这个任务放到任务队列中,消费者后台线程只需要负责从任务队列中取出Task执行就好了。这个思路是参考了陈硕muduo库里日志库的设计,我在此之上添加了一个线程解决了单个后台线程来不及持久化的问题。