5

ADDメソッドを介して(並列foreachのように)並列に子要素をXElementに追加するのは安全ですか?

ありがとう!

4

2 に答える 2

9

ドキュメントから:

このタイプのパブリック静的(Visual Basicで共有)メンバーはすべてスレッドセーフです。インスタンスメンバーは、スレッドセーフであることが保証されていません。

言い換えれば、いいえ、addメソッドはスレッドセーフではありません。

于 2010-11-19T22:49:14.883 に答える
0

最近の(苦痛な)経験から、それは非常に非常に安全ではないスレッドだと思います。

私は、それぞれ740万と880万の余分な不要なXElementインスタンスを含むいくつかのダンプファイルを分析しました。私が判断できる最善の方法として、XElementのサブノードの操作(場合によってはAdd()の呼び出しを含む)を含む無害に見えるコードが2つのスレッドプールスレッドから同時に呼び出されたときに作成されました。

これはそれほど驚くべきことではありません-XElementと関連するクラスは、リンクリストのような構造を使用して実装されます。リンク参照をスクランブルすると、ループ、アタッチされていないフラグメントなど、さまざまな奇妙な結果が生じる可能性があります。

于 2011-06-10T20:30:05.733 に答える