我现在的情况是 多人多线程读写某一个文件.读应该可以多人同时读,但是不能同时多人写该文件.我希望加个bool值来保证写该文件时,不允许其他人读和写 写完后,才让其他人读写.但是我怎么判断该文件目前是正在读还是正在写呢.

解决方案 »

  1.   

    我现在的情况是   多人多线程读写某一个文件.读应该可以多人同时读,但是不能同时多人写该文件.我希望加个bool值来保证写该文件时,不允许其他人读和写   写完后,才让其他人读写.但是我怎么判断该文件目前是正在读还是正在写呢.主要是某人写该文件时,如果有人读或者写 会报错.
      

  2.   

    可以使用单件模式啊,将读与写分别划分为两个类read和write,如下:
    class reader
    {
      static boolean IsWriterwriting=false;
      private read()
      {
      }
      static public GetReader()
      {
         if(Iswriting)
         {
            return new read();
         }
         else 
         {
            return null;
         }
      }
      static public SetWriting(boolean temp)
      {
         IsWriterwriting=temp;
      }
    }
    class writer
    {
      static boolean Iswriting=false;
      private writer()
      {
      }
      static public GetWriter()
      {
         if(Iswriting)
         {
             return null;
         }
         else 
         {
            Iswriting=!Iswriting;
            reader。SetWriting(Iswriting);
            return new writer();
         }
      }
      public Dispose()
      {
        Iswriting=!Iswriting;
        reader。SetWriting(Iswriting);
      }
    }
    PS:使用Iswriting创建唯一个写实例,使用IsWriterwriting判断能否创建读实例进行读操作