作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在执行许多磁盘操作时,多线程是有帮助、有阻碍还是没有区别?
例如,将多个文件从一个文件夹复制到另一个文件夹时。
澄清 : 我明白当执行其他操作时,并发显然会有所作为。如果任务是打开一个图像文件,转换为另一种格式,然后保存,则磁盘操作可以与图像操作同时执行。我的问题是当唯一执行的操作是磁盘操作时,并发排队和响应磁盘操作是否更好。
最佳答案
到目前为止,大多数答案都与操作系统调度程序有关。但是,我认为还有一个更重要的因素会导致您的回答。您是写入单个物理磁盘还是多个物理磁盘?
即使您使用多个线程并行化......对单个物理磁盘的 IO 本质上是一个序列化操作。每个线程都必须阻塞,等待它访问磁盘的机会。在这种情况下,多线程可能毫无用处……甚至可能导致争用问题。
但是,如果您将多个流写入多个物理磁盘,同时处理它们应该可以提高性能。对于托管磁盘尤其如此,例如 RAID 阵列、SAN 设备等。
我认为这个问题与操作系统调度程序没有太大关系,因为它更多地与您写入的磁盘的物理方面有关。
关于multithreading - 多线程对 IO-bound 操作有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/902425/
我是一名优秀的程序员,十分优秀!