|
1
5
事情是这样的。如果文档中说实例方法不能保证是线程安全的,那么你最好记下来。如果你决定在没有适当同步机制的多线程场景中使用该类,那么你需要1)意识到忽略文档的后果,2)为所有假设在类的未来版本中无效做好准备。即使对于似乎只读取内部状态的方法,此建议也是有效的。 你怎么知道SelectNodes和SelectSingleNodes不会修改内部变量?因为如果他们这样做,那么他们肯定不是线程安全的!现在,我碰巧使用Reflector查看内部,我可以看到它们没有修改任何内部变量。但是,你怎么知道这在未来的版本中不会改变呢? 现在,由于我们实际上知道SelectNodes和SelectSingleNodes不会修改类的内部状态,因此它们 可能 尽管有警告,但只有在以下条件适用的情况下,才可以安全地进行多线程操作。
我的建议。..从字面上理解文档中的警告,并使用适当的同步机制。 |
|
|
2
2
当您要对XML文档进行写/读操作时,如果您不想遇到竞争条件,则需要同步这两个操作。如果你关心表现(谁不关心呢?)a ReaderWriterLockSlim |
|
|
3
0
SelectNodes/SelectSingleNode应该是安全的(它们只读取数据)。当然,您需要将这些与实际修改xml的任何方法同步。 |
|
|
4
0
您还可以使用MsXml 当您调用createInstance时,使用模型而不是经典的DomDocument。 |
|
|
user107586 · 如何处理等待句柄不会导致无限循环? 1 年前 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 1 年前 |
|
|
BenjiFB · C#内存缓存:在一次操作中追加到列表? 1 年前 |
|
|
András Takács · Python多线程问题 2 年前 |
|
|
András Takács · Python多线程错误 2 年前 |