用于监视线程和不同类锁定的共享变量

本文关键字:锁定 共享变量 同类 监视 线程 用于 | 更新日期: 2023-09-27 18:24:03

我正在开发一个C#Windows应用程序,在那里我在它们自己的线程中启动不同的类(即:线程1中的Class1实例、线程2中的Class2实例等)。

我正在尝试正确地挂起/恢复线程,但我不知道如何在不同的类和线程之间共享监视器的Wait/Pulse的锁变量。

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

谢谢!

用于监视线程和不同类锁定的共享变量

使用公共static字段,例如

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

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

当事情变得复杂时,AutoResetEvent或ManualResetEvent通常更明智,因为它们的时间不那么关键:无论排序如何,都可以通过大门。