gpt4 book ai didi

c# - 多个线程读取同一个文件

转载 作者:可可西里 更新时间:2023-11-01 07:50:34 25 4
gpt4 key购买 nike

我有一个需要多次读取的 xml 文件。我正在尝试使用 Parallel.ForEach 来加快此过程,因为读入的数据与读入的顺序无关。数据仅用于填充对象。我的问题是,即使我每次都在线程中以只读方式打开文件,它也会提示它是由另一个程序打开的。 (我没有在文本编辑器或任何东西中打开它 :))

如何从同一个文件完成多次读取?

编辑:文件约为 18KB,非常小。它被阅读了大约 1,800 次。

谢谢

最佳答案

如果要多个线程读取同一个文件,需要指定FileShare.Read:

using (var stream = File.Open("theFile.xml", FileMode.Open, FileAccess.Read, FileShare.Read))
{
...
}

但是,由于多种原因,您不会因此获得任何加速:

  1. 您的硬盘一次只能读取一件事。尽管您有多个线程同时运行,但这些线程最终都会相互等待。
  2. 您无法轻松地解析 XML 文件的一部分。您通常每次都必须解析整个 XML 文件。由于您一直有多个线程读取它,因此您似乎不希望文件发生变化。如果是这样,那你为什么要多读几遍?

关于c# - 多个线程读取同一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com