监视器锁定与线程和不同类的共享变量

时间:2012-02-11 16:34:24

标签: c# locking wait monitor pulse

我有一个C#Windows应用程序,我正在开发自己的线程中的不同类(即:线程1中的Class1实例,线程2中的Class 2实例等)。

我正在尝试正确挂起/恢复线程,但我无法弄清楚如何在不同的类和线程之间共享Monitor / Wait of Pulse的锁定变量。

这似乎应该有一个简单的答案,我只是想不通。我真的很感激任何帮助!

谢谢!

2 个答案:

答案 0 :(得分:1)

使用公开static字段,例如,

public class Sync
{
    public static object LockObject = new object();
    //or any other sync mechanism 
    //AutoResetEvent,ManualResetEvent,Semaphore,CountdownEvent,Mutex etc.
}

答案 1 :(得分:0)

监视器锁定对于shnchronization非常有用,但是当用作消息传递 API时,它通常只能扩展到两个线程,因为您需要知道每个线程的确切位置。

当事情变得复杂时,AutoResetEvent或ManualResetEvent通常更为明智,因为它们对时间要求较低:无论订购如何,都会通过门。