JsonConvert调用上的线程争用
本文关键字:线程 争用 调用 JsonConvert | 更新日期: 2023-09-27 18:14:48
有没有人在JSON.NET中使用JsonConvert遇到线程争用问题?我有大量的线程调用JsonConvert。并发反序列化时,它们似乎相互阻塞。VS Profiler告诉我,我所有的并发问题都隐藏在Newtonsoft.*中。这是已知的吗?我应该做些什么来使反序列化调用并行运行吗?
我意识到任何一个调用都是只向前的操作,不会线程化自己,但是为什么独立的反序列化会竞争呢?
如果您正在调用如下的非异步方法:
var obj = JsonConvert.DeserializeObject<T>(jsonValue);
阻塞呼叫。考虑如下使用async版本:
var task = Task.Factory.StartNew(() => JsonConvert.DeserializeObject<T>(jsonString));
var value = await task;
事实证明,JsonConvert.DeserializeObjectAsync()并不像Stephen提到的那样是真正的异步(http://james.newtonking.com/json/help/index.html?topic=html/M_Newtonsoft_Json_JsonConvert_DeserializeObjectAsync_1.htm)
希望对你有帮助。
编码快乐!
cleankoder