【问题标题】:does C# lock affect other processes on the same computer systemC#锁会影响同一计算机系统上的其他进程吗
【发布时间】:2012-03-11 12:03:27
【问题描述】:

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

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

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

感谢您的回答

【问题讨论】:

  • 锁是进程本地的。有一些锁定机制可用于进程间同步,例如 MutexSemaphore 类。

标签: c# .net locking vmware


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    有什么东西让你想到这个问题,还是你只是一时兴起想象一些场景?

    lock 对于运行这些线程的进程来说是本地的。如果您想跨进程同步,请考虑使用Semaphore

    会不会因为密集使用锁而影响其他进程的性能?

    简短的回答,不。当然,随意使用lock 可能会导致一些活锁/死锁场景。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2016-02-22
        • 2018-07-17
        • 1970-01-01
        • 1970-01-01
        • 2012-11-02
        • 1970-01-01
        • 1970-01-01
        • 2017-02-28
        • 2015-02-08
        相关资源
        最近更新 更多