俺现在有一个需求
我在两个线程里面读一个文件
一个写 一个读并且控制读的不能比写的多
而且先写后读
可是调用读的时候 读不出来
读出来的数据为0
此时文件肯定是有数据存在的
真奇怪呢 不知道这样操作对不对呢?
俺是用两个handle操作的 一个线程中Create一个handle
文件操作分别依赖于单独的handle不知道这样可不可以 或者该怎么才可以
希望能得到大家的帮助 项目比较急呢

解决方案 »

  1.   

    写线程在写的时候只是写在缓冲区里,并没有写到磁盘里,所以读线程读不到数据,可以在写线程中,隔一段时间用fflush强制写磁盘。
      

  2.   

    回楼上的朋友们,Create的时候,第三个参数设置为FILE_SHARE_READ|FILE_SHARE_WRITE,应该算是共享模式吧。
    另外每次写入后,都执行了flush,然后通过变量控制,保证读取的不会比写入的多。另外实在没想到别的达到需求的方式,因为整体功能比较复杂,希望大家能帮忙找出问题。
      

  3.   

    问题解决 
    两个CreateFile的模式要一致才行,之前疏忽了,多谢ls各位