使用静态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。我可以同时写入的文件数量是否有任何默认限制,或者我可以修改任何此类属性的任何方式?
答案 0 :(得分:-1)
这里的瓶颈将是硬件,而不是软件。磁盘驱动器上的磁头一次只能在一个位置。如果有多个线程告诉它同时执行某些操作,那么它不会更快地工作(如果反复寻找新的块可能会慢一些)。
有用的并行程度将等于您拥有的物理驱动器数量。如果您有4个磁盘驱动器,则可以同时写出4个文件。
当然值得注意的是,无论您是否想要执行并行写入,都不需要这里有多个线程。如果实际上有多个物理磁盘驱动器,则可以使用异步而不是多个线程来实现并行性。