如何用多线程同时写一个文件?(20分)

  • 主题发起人 主题发起人 ildg
  • 开始时间 开始时间
I

ildg

Unregistered / Unconfirmed
GUEST, unregistred user!
在多线程下载一个文件时需要多线程地同时写一个文件,
请问怎么写?
在下载之前是不是要建立一个与要下载文件同样大的空文件?
总共就20分了,以后有分了一定再加,
谢谢。
 
http://www.2ccc.com/article.asp?articleid=775
标 题:支持断点续传的在线更新代码
 
非常感谢,
不过那个程序不是用多线程下载一个文件吧
 
如果是拷贝文件,我感觉多线程没多大用处(一块硬盘的时候,不包含RAID情况)
因为,硬盘在同一时间只能唯一占用!也就是说,在一个瞬间,只可能有一个程序对他访问。
如果用多线程,效率反而会下降一些。 上面随意说说,请指正!多谢。
 
3x to 刘麻子,您说得很对,
不过我现在是下载文件啊,呵呵。
 
呵呵,没看清题目,只看到上面一条,以为你不是要下载呢。如果下载后再合并呢?
 
》在下载之前是不是要建立一个与要下载文件同样大的空文件?
应该是这样的,调用 CreateFile SetEndOfFile 建立一空文件
然后在每个线程中打开一个文件句柄,每个句柄可以独立的访问文件,文件位置指针是与文件句柄相关联的。
具体操作没有试过,仅供参考。
 
非常感谢savetime,
能不能具体的举个例子?
多谢啦~
 
我已经实现了的,分块写入,给每个线程指定不同的起始写地址,线程间访问文件时用互锁机制。
 
sodme:
能不能把你的代码给我看看?
我用多线程写入的原因是因为我想让写入更快,
如果写入时锁定文件,就会适得其反。
我已经知道怎么做了,
用内存映射文件。
 
后退
顶部