2014-06-15 1 views
2

Saxon 9 HE를 사용하면 스타일 시트 (.Net 형식)를 컴파일하는 데 몇 초가 걸립니다.Saxon 9의 스레드 안전성 컴파일 된 변환

컴파일 된 변환이 스레드로부터 안전한지 확인할 수 있습니까? 즉, 스타일 시트를 컴파일하고 나중에 호출 할 인스턴스를 잡고있는 경우. 이 컴파일 된 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

은 한 번만 XsltExecutable ex = proc.NewXsltCompiler().Compile(new Uri("file:///" + styleSheet));를 컴파일해야하고 여러 스레드에서 XsltExecutable을 사용할 수 the documentation on saxonica.com 참조 : ". XsltExecutable 따라서 스레드 안전 불변이며,".

XsltTransformer, it says "XsltTransformer는 여러 스레드에서 동시에 사용하면 안되지만 동일한 스레드를 여러 번 실행하려면 단일 스레드 내에서 개체를 다시 사용하는 것이 안전합니다."