.net 4.5中最大同时进行的I / O操作数是多少?

时间:2014-10-30 20:55:15

标签: c# multithreading io

使用静态void,使用多线程场景可以同时写入的最大文件数是多少,即:

public static void WriteToXmlFile<T>(string filePath, T objectToWrite, bool append = false) where T : new()
{
    TextWriter writer = null;
    try
    {
        var serializer = new XmlSerializer(typeof(T));
        writer = new StreamWriter(filePath, append);
        serializer.Serialize(writer, objectToWrite);
    }
    finally
    {
        if (writer != null)
            writer.Close();
    }
}

将从同时运行的多个任务中访问此静态void。我可以同时写入的文件数量是否有任何默认限制,或者我可以修改任何此类属性的任何方式?

1 个答案:

答案 0 :(得分:-1)

这里的瓶颈将是硬件,而不是软件。磁盘驱动器上的磁头一次只能在一个位置。如果有多个线程告诉它同时执行某些操作,那么它不会更快地工作(如果反复寻找新的块可能会慢一些)。

有用的并行程度将等于您拥有的物理驱动器数量。如果您有4个磁盘驱动器,则可以同时写出4个文件。

当然值得注意的是,无论您是否想要执行并行写入,都不需要这里有多个线程。如果实际上有多个物理磁盘驱动器,则可以使用异步而不是多个线程来实现并行性。