数据不适合这种类型的螺纹操作



我有一个带标头的CSV文件。每行代表涉及HTTP请求和处理数据必须完成的工作。

我需要进行此多线程,以便更快地工作,但我不确定数据是否适合此。

我的过程将是:

  1. 将CSV加载到DataTable
  2. 调度程序函数将排队任务,分配每个任务一个数据表编号(我将限制并发任务的数量)
  3. 每个任务将仅读取其分配的数据表行。进行工作,然后相应地更新数据行并完成。
  4. 在末尾或操作或收到取消令牌时,数据表将序列化回CSV文件。

只有1个任务将访问单个行,但多个任务将同时访问其分配的行。

这可能会给我带来问题吗?

由于没有两个任务将访问相同的数据表行,甚至有必要在任务从读取或写入其数据表行之前锁定数据表?

请参阅DataTable类的文档,该文档说明:

线程安全

此类型是可用于多线程读取操作的安全。您必须同步任何写入操作。

因此,进行更新时需要锁定。行读取和处理应该是安全的。

请注意,在执行写作操作时,尚不完全清楚读取是否安全。如果您想安全而不是对不起,可以使用ReaderWriterLockSlim

鉴于您正在限制并发任务的数量,避免大量锁定争论的好策略可能是为每个行为提供行号的(顺序)分区,并让他们在数字上执行批处理更新加工行。

最新更新