C# DataTable内部和多线程使用

C# DataTable内部和多线程使用,c#,.net,multithreading,concurrency,datatable,C#,.net,Multithreading,Concurrency,Datatable,我想知道是否有很棒的书籍或网站详细讨论了如何以多线程方式使用DataTable。它应该详细讨论它在添加、获取、更新和删除行时的行为。它还应该讨论使用锁的正确方式、接受更改和其他重要细节。我认为您不会找到关于该主题的全部信息。对于一本书来说,这是一个非常狭窄的主题,DataTables在并行算法中并没有那么有用。DataTables的问题在于DataRows以一种模糊的方式与他们结合在一起。例如,更改作为主键一部分的DataRow中的列值将更新父DataTable的索引。这使得获得有意义的并行吞吐

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

我认为您不会找到关于该主题的全部信息。对于一本书来说,这是一个非常狭窄的主题,
DataTable
s在并行算法中并没有那么有用。
DataTable
s的问题在于
DataRow
s以一种模糊的方式与他们结合在一起。例如,更改作为主键一部分的
DataRow
中的列值将更新父
DataTable
的索引。这使得获得有意义的并行吞吐量变得更加困难,因为在进行任何类型的更改时,几乎必须锁定对所有内容的访问。但是,
DataTable
DataRow
对于多个读卡器都是安全的(只要没有写卡器),所以不会丢失所有的数据。

DataTable并不特殊:只从
DataTable
实例读取数据是线程安全的(如文档中所述),但是,如果更改实例的任何方面,则必须确保同步对其的访问

您不应该寻找特定于多线程数据表的内容,而应该阅读有关线程的一般内容。因此,约瑟夫·阿尔巴哈里(Joseph Albahari)的观点是正确的

(说到这里,请看一个相关的话题。)