Saxon 9编译变换的线程安全性

时间:2014-06-15 16:05:27

标签: c# .net xslt saxon

使用Saxon 9 HE,编译样式表需要几秒钟(在.Net中)。

任何人都可以验证编译的转换是否是线程安全的。即如果我编译样式表并保留实例以便将来调用。将从多个线程同时调用此编译的Transform实例会导致任何问题吗?

XsltTransformer transformer = proc.NewXsltCompiler().Compile(new Uri("file:///" + styleSheet)).Load();

//Store transformer instance as class variable and reuse it to eliminate compilation time

1 个答案:

答案 0 :(得分:1)

请参阅the documentation on saxonica.com,您只需编译XsltExecutable ex = proc.NewXsltCompiler().Compile(new Uri("file:///" + styleSheet));一次,然后可以在多个线程中使用XsltExecutable:“XsltExecutable是不可变的,因此是线程安全的。”。< / p>

关于XsltTransformerit says“不应在多个线程中同时使用XsltTransformer。但是,在单个线程中重用对象以多次运行相同的样式表是安全的。”