【问题标题】:DataTable internals and multithreaded usageDataTable 内部结构和多线程使用
【发布时间】:2010-11-05 13:55:07
【问题描述】:

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

【问题讨论】:

    标签: c# .net multithreading concurrency datatable


    【解决方案1】:

    DataTables 并不特殊:仅从 DataTable 实例中读取是线程安全的(如文档中所述),但是如果您更改实例的任何方面,您必须进行确保同步访问它。

    与其寻找特定于多线程数据表的内容,不如阅读有关线程的一般知识。为此,Joseph Albahari 的 Threading in C# 不会出错。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 2011-01-31
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多