我有一个正在开发的 C# Windows 应用程序,我在它们自己的线程中启动不同的类(即:线程 1 中的 Class1 实例,线程 2 中的 Class 2 实例等)。
我正在尝试正确挂起/恢复线程,但我不知道如何在不同的类和线程之间共享 Monitor 的 Wait/Pulse 的锁变量。
似乎这应该有一个简单的答案,我就是想不通。我真的很感激任何帮助!
谢谢!
使用公共static
领域,例如,
public class Sync
{
public static object LockObject = new object();
//or any other sync mechanism
//AutoResetEvent,ManualResetEvent,Semaphore,CountdownEvent,Mutex etc.
}
监视器锁定对于 shnchronization 很有用,但是当用作消息传递API 时,它通常只扩展到两个线程,因为您需要确切地知道每个线程在哪里才能知道它是否收到消息。
当事情变得复杂时,AutoResetEvent 或 ManualResetEvent 通常更明智,因为它们对时间的要求不高:无论排序如何,您都可以通过大门。