同一文件的读写问题
两个线程,同时对一文件进行读/写操作,当然,读与写会有机制保障不会产生重叠等问题。
我想问的是,fwrite是先写cache,fread也是先读cache,如果fwrite写的内容刚到cache,还未写到物理内存中去,那此时读的内容能读到刚写的那块cache吗?
实践表明这样是没有问题的,否则会造成读数据不完整,但因为对文件系统这块了解不是太多,希望有大侠能从理论的角度阐述一下原因,我心里也放心,谢谢。
[解决办法]
fread fwrite应该都是把请求提交给OS 由OS来写
真正的读写应该用sync做同步
如果你两个线程确定同步了
而且fwrite都写完了 则fread阻塞读是没问题的