gpt4 book ai didi

.net - System.Runtime.Serialization.DataContractSerializer 线程安全吗?

转载 作者:行者123 更新时间:2023-12-02 03:46:25 28 4
gpt4 key购买 nike

我想缓存 DataContractSerializer 的单个实例由多个线程同时使用,以避免为相同的根类型多次实例化序列化器的惩罚。每个线程将序列化不同的对象,但 DataContractSerializer对象本身将被共享。 (我不会使用 IDataContractSurrogateDataContractResolver ,它们显然与更复杂/正式的 XML/XSD 模式有关。)

我会好吗?

In MSDN under "Thread Safety" for System.Runtime.Serialization.DataContractSerializer , 它说:

Instances of this class are thread safe except when the instance is used with an implementation of the IDataContractSurrogate or DataContractResolver.



我觉得这有点含糊(这是典型的 MSDN 线程安全指南),但它似乎表明我的用例是合适的。如果您能指出个人经验、单元测试或展示它的框架反汇编,则奖励:)

附言我不认为这与 Is WCF's DataContractSerilaizer thread safe? 重复因为那个人的问题与 DataContractSerializer的线程安全无关本身。

最佳答案

是的,您的用例是合适的。 DataContractResolver 的实现和 IDataContractSurrogate由 DataContractSerializer 的用户完成。如果您没有实现和配置它们,则没有线程问题(否则 MSDN 文档将是完全错误的)。

我什至更进一步假设 MSDN 只排除了 DataContractResolver 和 IDataContractSurrogate 的使用,因为它们可能以错误的方式完成(即不是线程安全的)。但不幸的是,文件中没有证据证明这一点。

关于.net - System.Runtime.Serialization.DataContractSerializer 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16743721/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com