Goo*_*ber 2 c# multithreading locking monitor
我知道在开发多线程应用程序时,您必须使用监视器或锁等同步访问共享内存.
您如何告诉等待进程(proc2)使用锁定代码块(proc1)的进程是否已完成使用代码?
您是在谈论真正的操作系统流程,还是仅仅是流程中的任务?
如果它只是一个进程中的任务,那么通常只需让锁为您完成工作.第二个任务尝试获取第一个任务当前拥有的锁,并且只是阻塞.当第一个任务释放锁定时,第二个任务将自动解除阻止.
如果你想要第二个线程可以选择先做其他工作,你可以使用Monitor.TryEnter- 虽然这稍微更加繁琐.
如果你想等待,但你有更复杂的要求,而不仅仅是锁定,那么Monitor.Pulse/PulseAll/Wait可能需要.有关示例,请参见本页的后半部分.
如果您实际上在谈论流程,那么您将需要使用系统范围的结构,例如Mutex.它们比进程内.NET监视器"更重",但允许进程间协调.