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

本文关键字:操作 最大数 多少 net | 更新日期: 2023-09-27 18:28:27

使用多线程场景,使用静态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。我可以同时写入的文件数量有没有默认限制,或者我可以修改任何此类属性的任何方式?

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

这里的瓶颈将在硬件,而不是软件。磁盘驱动器上的磁头在任何时候都只能位于一个位置。如果有多个线程告诉它同时做一些事情,它的工作速度不会更快(重复寻找新块可能会更慢)。

有帮助的并行度将等于您拥有的物理驱动器的数量。如果您有4个磁盘驱动器,您可以从一次写入4个文件中获益。

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