C#中的线程安全和System.Text.Encoding
从不同的线程使用相同的Encoding
对象是否安全?
通过“使用”我的意思是,调用Encoding.GetString()
, Encoding.GetBytes()
并用XmlWriter
编写一些XML(由XmlWriter.Create(myStream, new XmlWriterSettings() { Encoding = myEncoding })
。
msdn网站声明“不保证所有实例成员都是线程安全的”。
那么,如何安全地同时编写两个XML文档呢? (谢谢!!)
是的,使用相同的Encoding
对象应该是安全的,因为它被设计为无状态 – 而Encoder
和Decoder
是有状态的,必要时保持不完整的字符等。 我想你可以写一个有状态的Encoding
类,但这是一个非常糟糕的主意。 据我所知,所有内置编码实现都是无状态和线程安全的。
例如, Encoding.UTF8
, Encoding.ASCII
等属性是单例。