var F: TextFile;
begin  //写文件
  …………
  AssignFile(F, ResultFile);
    if not FileExists(ResultFile) then
      Rewrite(F)
    else
      Append(F);
    writeln(F, FileName);
    CloseFile(F);
  …………
endbegin  //读文件
AssignFile(F, _Name);
    FileMode := 0;
    Reset(F);
    while not Eof(F) do
      Readln(F, s);
end这两段程序操作的都是同一个文件,有可能正在读时,又开始写,或者正在写时又开始读,他们之间会不会发生冲突,假如发生了冲突要怎么解决?其中reset好像是以独占方式打开文件,他的filemode:=2,我改成了0(共享方式),但就不知使用append打开文件时他会不会关闭该文件的所有指针?假如要关闭,有没有方法使append可以写,而其他地方同时可以读的方式来打开?

解决方案 »

  1.   

    TEvent + WaitForSingleObject  查一下帮助
      

  2.   

    如果你的两个过程都在同一个线程中就不必担这个心。如果是多线程除了如楼上所说,也可以用TCriticalSection控制起来比较方便。
      

  3.   

    会的,使用互斥元就Ok了
    就是TCriticalSectionhttp://lysoft.7u7.net
      

  4.   

    用这个也行~~~不过TCriticalSection有少少不同~~~
    TMultiReadExclusiveWriteSynchronizer
      

  5.   

    CriticalSection与CreateSemaphore,哪个效率高?