DataTable内部和多线程用法

时间:2010-11-05 13:55:07

标签: c# .net multithreading concurrency datatable

我想知道是否有很棒的书或网站详细讨论了如何以多线程方式使用DataTable。它应该详细讨论它在添加,获取,更新和删除行时的行为方式。它还应该讨论使用锁,接受更改和其他重要细节的正确方法。

2 个答案:

答案 0 :(得分:5)

DataTables并不特别:只需从DataTable实例读取就是线程安全的(正如文档中所述),但如果您更改实例的任何方面,那么确保您同步访问权限。

除了寻找特定于多线程数据表的内容之外,您还应该阅读有关线程的一般信息。为此,你不能错过Joseph Albahari的Threading in C#

(话虽如此,请查看相关主题的this discussion thread。)

答案 1 :(得分:4)

我认为你不会在这个主题上找到大量的信息。对于一本书来说,这是一个非常狭隘的主题,DataTable并不是真正知道在并行算法中有用的东西。 DataTable的问题在于DataRow以晦涩的方式与他们结婚。例如,更改作为主键一部分的DataRow中的列值将更新父DataTable的索引。这使得获得有意义的并行吞吐量变得更加困难,因为在进行任何类型的更改时,您几乎必须锁定对所有的访问权限。但是,DataTableDataRow对多个读者来说都是安全的(只要没有作者),所以一切都不会丢失。