JsonSerializerSettings线程安全吗?
如果我在我的项目中使用相同的设置,是否可以实例化我的JsonSerializerSettings
的一个静态副本并将其用于整个过程?
例如 :
private static readonly JsonSerializerSettings settings = new JsonSerializerSettings {
Formatting = Formatting.Indented,
TypeNameHandling = TypeNameHandling.None,
DateFormatHandling = DateFormatHandling.IsoDateFormat,
TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
};
public static string ToJSONString(this Object source) {
return JsonConvert.SerializeObject(source, settings);
}
那么,我线程危险吗?
以下对话发生在Twitter上,@JamesNK是JSON.net的作者:https://twitter.com/jonathan_oliver/status/332227095616966656
来自:Jonathan Oliver @jonathan_oliver致:@JamesNK
静态JsonConvert.DeserializeObject方法是否安全? 使用5.0.4和5.0.5获取一些奇怪的错误。
响应:
James Newton-King♔@JamesNK 2013年5月8日@jonathan_oliver
是。 如果他们不是,请在GitHub上创建一个问题
响应:
Jonathan Oliver @jonathan_oliver 2013年5月9日
@JamesNK事实证明,与JsonConvert一起使用的静态JsonSerializerSettings对象附带的ContractResolver不是线程安全的。
我没有看到有人提出过一个错误,但这暗示着它们的设计应该是线程安全的,但是可能有实现方式来破坏它,或者它可能不是一个整体。
既然你说你不改变JsonSerializerSettings
那么就不用担心线程的安全性。 线程竞争只能在修改另一个线程中的共享数据时才会发生,但在此情况并非如此。
我建议你阅读这篇文章,最后你应该对线程,线程安全等有很好的理解。
此外,线程安全性是一个更通用的术语,您需要更精确地表达您的意思。 请参阅你称之为“线程安全”的东西是什么? 获取更多信息。
链接地址: http://www.djcxy.com/p/78681.html