想写一个多线程写多个文件的程序,
开启4个线程,
线程1写文件1,线程2写文件2,线程3写文件3,线程4写文件4,我写的为什么在文件写入时老出现错误呢!!!
需要对文件加锁访问吗??请各位提示一下有什么好的方法!!非常的感谢!!!

解决方案 »

  1.   

    多个线程写多个文件是没有问题的,我现在在做多线程下载视频,这个多线程是指同时下载多个视频,支持断点续传。
    文件以创建方式:CFile aFile;
    BOOL bOK;
    bOK = aFile.Open(sFileName, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
    打开,进行写是未出现问题;
    但是断点续传需要将文件指针指向末尾,接着下载完的继续下载时,Seek移动指针出现问题,原因现在也不知道,不要越界了,后来花不少功夫,现在是成功的, 先取长度再移:
    bOK = aFile.Open(sFileName, CFile::modeWrite | CFile::typeBinary);
    int iLen = aFile.GetLength();
    aFile.Seek(iLen, CFile::begin);
    不过对待下载的文件使用Seek移指针还是出问题:CHttpFile* pHttpFile = NULL;
    pHttpFile->Seek(....);//出错
    所以就再从头读,大于文件长度iLen-1时继续写,如果你是这问题,你可以试一试!
      

  2.   

    写文件的瓶颈主要不是CPU,瓶颈是磁盘的速度。所以多线程没有必要。