【发布时间】:2010-11-05 13:55:07
【问题描述】:
我想知道是否有很棒的书或网站详细讨论了如何以多线程方式使用 DataTable。它应该详细讨论它在添加、获取、更新和删除行时的行为。它还应该讨论使用锁、acceptchanges 和其他重要细节的正确方法。
【问题讨论】:
标签: c# .net multithreading concurrency datatable
我想知道是否有很棒的书或网站详细讨论了如何以多线程方式使用 DataTable。它应该详细讨论它在添加、获取、更新和删除行时的行为。它还应该讨论使用锁、acceptchanges 和其他重要细节的正确方法。
【问题讨论】:
标签: c# .net multithreading concurrency datatable
DataTables 并不特殊:仅从 DataTable 实例中读取是线程安全的(如文档中所述),但是如果您更改实例的任何方面,您必须进行确保同步访问它。
与其寻找特定于多线程数据表的内容,不如阅读有关线程的一般知识。为此,Joseph Albahari 的 Threading in C# 不会出错。
(话虽如此,请查看相关主题的this discussion thread。)
【讨论】:
我认为您不会找到关于该主题的大量信息。对于一本书来说,这是一个非常狭窄的话题,DataTables 并不知道它在并行算法中的用处。 DataTables 的问题在于 DataRows 以不为人知的方式与他们结婚。例如,更改作为主键一部分的DataRow 中的列值将更新父DataTable 的索引。这使得获得有意义的并行吞吐量变得更加困难,因为在进行任何类型的更改时,您几乎必须锁定对一切的访问。但是,DataTable's 和 DataRows 对于多个读取器(只要没有写入器)是安全的,因此不会丢失所有内容。
【讨论】: