c#中线程同步的各种方法有哪些?

时间:2011-05-15 06:44:46

标签: c# .net multithreading

除了使用lock(object)关键字之外,在某些情况下是否有任何根本不同或棘手或其他有用的方法来进行同步?

3 个答案:

答案 0 :(得分:1)

Windows.Threading命名空间中有许多类。

MonitorMutex是命名空间内两个重要的同步类(还有其他类)。 Lock是简单Monitor操作的语法糖。

Interlocked提供了一些线程安全操作(IncrementDecrement等等。

我建议查看命名空间的MSDN文档,并将其归类于其中。

答案 1 :(得分:1)

如果您需要在另一个线程上通知某个线程事件,那么ManualResetEventAutoResetEvent允许您这样做。

如果您发现您的代码可以处理同时读取但需要同步写入,并且您的阅读频率比写入频率高得多,那么ReaderWriterLock(或现在ReaderWriterLockSlim)将会有很大帮助

MutexSemaphore提供与lock()类似的功能,但可用于跨进程进行同步。

还有一些其他人,但这些是我通常使用的三个主要的其他人。

答案 2 :(得分:1)

问题非常广泛 有关于不同同步技术的书籍以及在哪种情况下使用的书籍 有很多不同的方法可以进行同步。

Overview of Synchronization Primitives

在.NET 4中添加了一些新的同步原语。http://msdn.microsoft.com/en-us/library/dd460718.aspx