多进程写log:
(1)通过文件加锁的方式,在一个进程访问的时候将文件加锁,处理完了再关闭,不过这种方式会造成文件大频繁操作,导致性能比较低(磁盘慢)。
另外对于这种方式,有个小的优化就是,可以每个进程有一个内存区域,等到内存区域满了之后再存储,不过可能会造成中间如果出现问题,会导致信息不能够记录(开缓存);
(2)通过信号灯或者令牌的方式,当一个进程活的信号灯的时候或者令牌的时候可以使用,或者加互斥,每个进程使用统一的一个互斥量,如果存在则证明有文件在读写,其他进程需要等待。
(3)通过消息的方式,有一个主线程维护一个队列,其他进程在处理log时,与这个主进程通信,将log信息发给主进程,主进程从队列中取出内容进行写入操作,当然,这里,主进程最好也有一个内存区域,当信息满时在写入文件。当然如果觉得消息队列不好处理,也可以使用windows自带的消息对列,进行处理。