一个大量并发操作的文件,可能有多个写线程在不断地往里写日志信息,一行一行的记录;
同时有另一个读线程,一行一行地去读,如果文件大的话可能只读一部分,也可能读到全部;
问题是怎么避免读到不完整的记录呢?也就是说写线程还没有写完,就被读出去了。
可不能对文件加锁噢,这样的话,性能就慢了!!!

解决方案 »

  1.   

    磁盘 IO 操作的并发率为 0,也就是说磁盘的 IO 操作无法使用多线程来提升性能!
      

  2.   


    嗯,这个考虑过了,先把待写的数据排成一个队列,等队列满后,再全部写入File .对吧?
      

  3.   


    用文件作为过渡,这样的做法我感觉本身就存在问题!如果是一边在写,另一边在读的话,建议使用 Socket 通信,而不是采用文件作为载体。
      

  4.   


    没办法,设计文档是这样的。只能考虑技术实现了。另外考虑用mount操作来取代socket,就相当于读本地文件一样。