我做了一个程序,多个线程同时进行,在写文件的时候,可能会出现多个线程同时写一个文件的情况,也就是争夺一个资源,请问这样程序会挂掉吗

解决方案 »

  1.   

    作为映射文件打开CreateFileMapping,然后读写之前WaitForSingleObject。
      

  2.   

    独占写时会返回失败吧,处理掉就好了。再保险点catch CFileException.
      

  3.   

    肯定会吧,建议设一对lock();和unlock();写之前先加锁,写完再解锁.如果写之前发现已经锁上了,就先等待,等待n个周期之后仍然锁着,另作处理.
      

  4.   

    线程同步就行了。
    正好我这有个例子借你用用,就是写日志时用的:
    void CLog::WriteLog(CString buf)
    {
    InitializeCriticalSection(&cs_Log);
    EnterCriticalSection(&cs_Log);
    Flog(buf);
    buf.ReleaseBuffer(0);
    LeaveCriticalSection(&cs_Log);
    }