首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XslCompiledTransform线程安全

XslCompiledTransform线程安全
EN

Stack Overflow用户
提问于 2014-12-05 12:52:56
回答 1查看 980关注 0票数 3

用于System.Xml.Xsl.XslCompiledTransform类状态的.NET:

螺纹安全 1 XslCompiledTransform对象在加载后是线程安全的。换句话说,在Load方法成功完成之后,可以从多个线程同时调用转换方法。 2如果在一个线程中再次调用Load方法,而在另一个线程中调用Transform方法,则XslCompiledTransform对象将继续使用旧状态来执行转换调用。当加载方法成功完成时,将使用新状态。 3注释当从多个线程同时调用时,Load方法不是线程安全的。

我确信1 & 2段是指在同一个XslCompiledTransform对象实例上调用Load()/Transform() (在多个线程中)。但是对于3,是否有人知道它们是指同一实例上的同步Load()s,还是(有某种静态的东西意味着)您必须从所有实例中相互排除并发Load()s?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-06 11:40:36

查看ILSpy中的代码,没有可见的静态同步结构。您可以对来自不同线程的不同实例调用Load()

可以预见的是,Load将实例化XSLT编译器并将样式表编译到内部对象,稍后转换方法将使用该对象。这就解释了1:一旦编译了转换,就可以从不同的线程调用它,因为内部对象现在是只读的。

再次调用Load将重新编译内部对象,因此它必须与当前正在进行的任何转换同步,这相当于2。

同时从不同线程调用编译器将创建构建最终内部转换对象(3)的竞赛。但是不同的实例是独立的,它们都有自己的内部转换对象,每次调用Load时都会实例化一个新的编译器。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27316343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档