共享对象和多线程问题。我应该关心吗?

时间:2009-12-18 14:34:23

标签: .net multithreading

我有一个托管多个WCF服务的Windows服务。在我的Windows服务中,我有几个具有单例行为的对象。可以从外部通过WCF服务访问此对象。调用可以将值放入对象,另一个调用可以检索此值。

我应该关心多线程问题吗?我不是自己开始任何线程。但无论如何,在访问单例对象时我应该进行任何锁定吗?访问对象的方法怎么样?它们不应该标记为同步吗?

编辑这些对象不是单例。使用具有单例行为的IoC创建对象。

2 个答案:

答案 0 :(得分:2)

对您的服务的每次调用都是它自己的一个线程。 所以你开始创建线程,甚至很多。

我不打算讨论我对单身人士等问题的立场。但是,当你共享可变数据时, 要考虑如何保护它不受并发访问的影响。 如果线程a将某些东西放在那里而线程b正在寻找某些东西,那么你可能会得到不可预测的结果。

最明显的解决方案是使用锁定进行读写。 查看ReaderWriterLockSlim的文档,该文档可以帮助您入门。

答案 1 :(得分:1)

,我认为你应该这样做。不久之前就提出了类似的问题。

Object that is needed throughout the application

请参阅此处了解一些解释

Implementing Singleton in C# ,查看 Multithreaded Singleton

同样Ist way of implementing Singleton Pattern in C#:查看在C#中实现Singleton Pattern的第三种方式:简单多线程单例模式在C#中实现Singleton模式的第四种方式:多线程单例模式