Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
通过其 ADD 方法以并行方式(如在并行 foreach 中)将子元素添加到 XElement 是否安全?
谢谢!
从文档中:
此类型的任何公共静态(在 Visual Basic 中为 Shared)成员都是线程安全的。不保证任何实例成员都是线程安全的。
换句话说,不,该add方法不是线程安全的。
add
最近(痛苦的)经历让我认为这是非常非常不安全的线程。
我分析了几个转储文件,它们分别包含 740万个和 880 万个额外不需要的 XElement 实例。据我所知,它们是在同时从两个线程池线程中调用一些涉及操作 XElement 的子节点(包括在某些情况下调用 Add() )的看似无害的代码时创建的。
这并不令人惊讶——XElement 和相关的类是使用类似链表的结构实现的,如果你打乱链接引用,可能会出现各种奇怪的结果——循环、未附加的片段等。