5
回答
多线程的文件读写实际上比标准的同步读写要慢,为什么?

该问题在stackoverflow上的描述:https://stackoverflow.com/q/49251486/6652192

第二段代码比第一段代码要慢8s左右,第二段代码连续提交了2000个写请求给Windows。windows会开启多个线程进行写操作,完成后再通知应用程序。按理说多线程执行比单线程执行快,但事实却相反,为什么?

<无标签>
举报
临风ivy
发帖于6个月前 5回/490阅

这问题太傻了。线程多有屁用,总线只有一个或两个,硬盘只有一个读写接口,内存每次只能写一个区域。所以,并行只能在多通道中才能体现出优势。高速单通道的环境只能利用空闲时间模拟并行,本质还是串行,不会快过串行。

引用来自“dwcz”的评论

这问题太傻了。线程多有屁用,总线只有一个或两个,硬盘只有一个读写接口,内存每次只能写一个区域。所以,并行只能在多通道中才能体现出优势。高速单通道的环境只能利用空闲时间模拟并行,本质还是串行,不会快过串行。

精辟,谢谢回答,对底层还不是很了解。

--- 共有 3 条评论 ---
cuizizhe 回复 @临风ivy : 普通硬盘的话,多线程操作多文件,需要硬盘额外的定位动作,速度也不一定快 2个月前 回复
临风ivy根据你的提示重新看了下代码,AsynchronousFileChannel在写入之前给文件加了锁,AsynchronousFileChannel在同一时间内只允许一个写操作,所以多线程是无效的,如果是写多个文件,多线程还是有效的。 6个月前 回复
dwcz不需要了解底层,只需记住一个人满负荷工作时,优化啥流程都没用,只有增加人手,才是唯一解决方案。所谓并发与串发是在资源丰富时才有意义。资源不丰富时,要么加资源,要么减少资源消耗。 6个月前 回复
顶部