y****n 发帖数: 192 | 1 一个线程在读文件的时候会不会把文件锁住?
另外,是不是即使用多线程同时读文件也不会加快速度呢?我的理解是I/O通道只有一个,单线程和多线程能达到的速度已经被瓶颈了。
谢谢! |
m******t 发帖数: 2416 | 2
Not unless you specifically request a lock on the file.
Probably not worth it.
【在 y****n 的大作中提到】 : 一个线程在读文件的时候会不会把文件锁住? : 另外,是不是即使用多线程同时读文件也不会加快速度呢?我的理解是I/O通道只有一个,单线程和多线程能达到的速度已经被瓶颈了。 : 谢谢!
|
a****l 发帖数: 8211 | 3 Not only will multi-threading not increase the reading speed of a file, most
probably it would actually slow down the speed and at the same time is
murdering the hard drive. Good luck.
一个,单线程和多线程能达到的速度已经被瓶颈了。
【在 y****n 的大作中提到】 : 一个线程在读文件的时候会不会把文件锁住? : 另外,是不是即使用多线程同时读文件也不会加快速度呢?我的理解是I/O通道只有一个,单线程和多线程能达到的速度已经被瓶颈了。 : 谢谢!
|
c*****t 发帖数: 1879 | 4 如果你的文件很大,同时处理的时间很长。双线程其实是个不错的选择。
一个专门读硬盘(producer),一个专门处理(consumer)。即使只有
一个 cpu,也是很好的选择。
一般的
while ( read ( buffer ) )
{ dealwith ( buffer ); }
有个很大的问题就是,没有利用 I/O block 的时候(其实 cpu idle)
做事情。不过一般文件小,又因为 disk cache,效果不是太明显。大
文件就比较重要了。
一个,单线程和多线程能达到的速度已经被瓶颈了。
【在 y****n 的大作中提到】 : 一个线程在读文件的时候会不会把文件锁住? : 另外,是不是即使用多线程同时读文件也不会加快速度呢?我的理解是I/O通道只有一个,单线程和多线程能达到的速度已经被瓶颈了。 : 谢谢!
|
h*****0 发帖数: 4889 | 5 双线程处理,和多线程读文件,不是一个东西吧。
【在 c*****t 的大作中提到】 : 如果你的文件很大,同时处理的时间很长。双线程其实是个不错的选择。 : 一个专门读硬盘(producer),一个专门处理(consumer)。即使只有 : 一个 cpu,也是很好的选择。 : 一般的 : while ( read ( buffer ) ) : { dealwith ( buffer ); } : 有个很大的问题就是,没有利用 I/O block 的时候(其实 cpu idle) : 做事情。不过一般文件小,又因为 disk cache,效果不是太明显。大 : 文件就比较重要了。 :
|
F****n 发帖数: 3271 | 6 实际上这个问题depends on 硬件,在硬件允许的情况下多线程是有可能大大提高I/O速
度的。在RAID DRIVE上2-5个thread 比 single thread 快多了。
【在 h*****0 的大作中提到】 : 双线程处理,和多线程读文件,不是一个东西吧。
|