C#lock会影响同一计算机系统上的其他进程吗?

时间:2012-02-21 06:26:19

标签: c# .net locking vmware

我试图了解一个进程是否会干扰在同一个硬件系统上运行的另一个进程。这可能发生在各种各样的产品中。即。 vmware或者像运行多个.net应用程序一样简单。

如果我在C#术语中发生特定进程的重复锁定,例如,互锁或锁定关键字,是否会因为密集使用锁定而影响其他进程的性能?该设置是一个重载的www系统,我遇到了一些情境延迟,我想确定延迟是否是由一个密集的while循环的锁被一个不同的Windows内核线程完全隔离。

如果没有隔离,在这种情况下.net中的应用程序域会帮助我吗?

感谢您的回答

3 个答案:

答案 0 :(得分:3)

不,不会。 C#中的lock和整个.Net是进程的本地。它不能直接影响机器上的其他进程。

lock语句对特定的对象实例进行操作。为了使lock能够影响多个进程,他们在同一个对象实例上都必须lock。这是不可能的,因为对象是进程的本地对象。

答案 1 :(得分:1)

  

我试图了解一个进程是否会干扰在同一个硬件系统上运行的另一个进程

有没有什么能引导你解决这个问题,或者你只是想象一下基于一时兴起的情景?

lock是运行这些线程的进程的本地。如果要跨进程同步,请考虑使用Semaphore

  

由于密集使用锁定会影响其他进程的性能吗?

简短的回答,没有。当然,lock的不受约束和异想天开的使用可能会导致一些实时锁定/死锁情况。

答案 2 :(得分:0)

不,这不会成为问题......你只是锁定自己的工作流程。其他任务有他们的过程。虽然锁对于特定任务很有用,但我建议您将它们保持在最低限度,因为您将在应用程序中引入等待。