是否可以从多个线程写入同一文件的不同部分?

szx*_*szx 10 c io disk-io

我可以从多个线程(在典型的PC上)同时写入同一文件的不同部分吗?我的意思是只有一个磁头,所以写入只能以某种顺序执行,即不是并行执行,对吧?

编辑:

我正在编写一个对大型二进制文件进行排序的程序,但大部分时间仍然花在磁盘I/O上,所以我只是想知道通过并行执行I/O可以获得额外的速度.

NPE*_*NPE 6

没有什么可以阻止你让多个线程写入同一文件的不同部分.

我有一个程序可以对大型二进制文件进行排序,但大部分时间仍然花在磁盘I/O上,所以我只是想知道通过并行执行I/O可以获得额外的速度.

如果程序是磁盘绑定的,那么使其成为多线程(并且仍然将相同数量的数据写入同一磁盘)将不会加速它.

如果我们谈论的是传统硬盘驱动器,顺序I/O通常比I/O更快,包括来回移动磁盘头.考虑到这一点,在线程之间拆分I/O甚至可能适得其反.

在加快速度方面,有几种途径可供探索:

  1. 减少I/O量(例如,通过采用需要较少I/O的排序算法,或者通过在内存中完成更多工作);
  2. 提高I/O吞吐量,例如使用更快的驱动器.