多线程 实现大文件的复制(100分)

  • 主题发起人 主题发起人 shbjkl
  • 开始时间 开始时间
用楼上的代码串行化了所有操作,和单线程有什么区别了?
这样的话比单线程还慢,楼主的代码出问题的原因很简单,
他没有认真看帮助。
 
呵呵这是理论算法,在实际使用的时候可以在read 和 write 之间加上sleep(0),这样在各个线程执行的时候就可以互相串行执行了,下面对举例说明,假设有2个线程(t1,t2)
1。未用sleep的时候可能的操作序列为:t1读->t1写->t1读->t1写->t2读->t2写->...
2。用sleep后可能为:t1读->t2读->t1写->t2写->t1写->t2读->...
 
打错了,2影如下:
2。用sleep后可能为:t1读->t2读->t1写->t1读->t2写->t1写->...
 
我很同意张无忌的说法!
其实很简单,根本不用想什么程序!
大家可以去试一下,找几个大的文件,如VCD文件文件,或者更大的文件(>100M)
你在WINDOWS里面先拷贝一个文件粘贴到别的盘,这个文件还没有拷贝完成,再拷贝
另外一个文件再粘贴,多做几次就好比开多个线程。
这样的结果你知道吗?你的机器会变得很慢,拷贝文件的时间绝对不会比一次性拷贝多个文件(单线程)再粘贴少,只会多!
我这里天天要拷贝上千G的VCD,DVD文件,不管用GHOST也好,还是直接拷贝也好,一般的
机器是120G/小时。硬盘I/O速度有很大关系!
如果哪位能有好的技术提高拷贝速度,还请多指教!
 
to:shbjkl
src:=tfilestream.Create(o1.FileName,fmOpenRead );中
src是什么东东?
 
src是什么东东?
[:D]
 
src 当然是filestream 了。
 
请参考完成端口模式
 
多人接受答案了。
 
后退
顶部