1,多个写不同文件的线程可以同时执行。
2,要避免两个或两个以上的线程同时写同一个文件。附带说明:
文件的数目不确定。

解决方案 »

  1.   

    加锁,弄个结构体把文件句柄和锁放一起struct
    {
    HANDLE hFile;
    HANDLE hMutex;
    }另外每个线程还要保存好文件指针
      

  2.   

    varding,具体怎么实现? 你弄个结构体,出来,互斥只有一个呀。
    一旦互斥了,不同文件也要等啊。线程函数内的实现,能给个代码片段吗?
      

  3.   


       假设你现在有要写入的文件10个,f1...f10,线程10个t1...t10,那么定义10个临界区c1...c10
       任何一个线程tn在写入文件fn之前,获取该文件对应的锁cn.lock,该线程写完之后,调用cn.unlock。这里就要注意,在某次写的过程中,不要再去些其他的文件。比如已经c1.lock,在写f1时,再去写文件2,调用c2.lock,这样可能造成死锁的。
       另外,获取临界区和释放临界区之间的代码最好用异常处理保护起来,以免某个线程获取锁出错后未释放,导致其他线程死锁。