JavascriptSerializer或JavascriptDeserializer线程的不同实例上的不同线程是否安全

Joh*_*son 5 .net serialization multithreading json thread-safety

我在这里寻找明确的答案.

根据文档,JavascriptSerializer的公共静态方法是线程安全的,但非静态方法不是.

是否保证对于此类的公共非静态方法,运行不同线程的不同实例是线程安全的(即,没有可能违反线程安全的私有静态资源)?它特别是我感兴趣的JavascriptSerializer和JavascriptDeserializer中的序列化和反序列化的方法,但一般都想知道答案.

也就是说,如果线程A仅在实例A上运行而线程B仅在实例B上运行,那么在该场景中是否可以确保公共非静态方法的线程安全性?

Tim*_*ora 5

回顾一下这个问题:JavaScriptSerializer在最多只有一个线程的不同线程上是否可以使用离散实例与特定实例进行交互?

我在这里寻找明确的答案.

我不能给你那个.但是,(正如您可能知道的那样)文档中的线程安全消息非常通用,几乎无处不在(例外是管理并发的类型).

轶事:我不知道存储不是线程安全的共享内部状态的任何类型.这等于是询问是否可以使用两种不同的情况下,ListXmlDocument在两个不同的线程; 如果不能,框架将毫无用处.

JavaScriptSerializer是因为Web服务器会在多个线程上多次实例化(ASP.Net线程非常复杂,但是在不同的线程上肯定会创建和调用多个类型的实例).MVC框架在JavaScriptSerializer内部使用,因此很明显团队打算在多线程Web环境中使用它.

反编译源的快速视图显示没有共享内部状态.正如@usr所说,内部实施并不保证一致性.但是,由于上述原因,这种情况似乎不太可能发生变化.

总而言之,JSON.net库通常被认为是JSON(de)序列化的优越替代品,因为它的性能和灵活性.