代码之家  ›  专栏  ›  技术社区  ›  Indeed is Trash

锁定声明C#

  •  6
  • Indeed is Trash  · 技术社区  · 17 年前

    假设我有三个线程需要访问一个集合,我在每个线程的访问周围使用了一个锁块。以下情况会发生。..

    (1) 线程1获取集合的锁

    (3) 线程3被阻塞

    当线程1释放锁时,下一个谁可以拿走锁?这是FIFO访问吗?

    谢谢

    5 回复  |  直到 17 年前
        1
  •  17
  •   Amy B    17 年前

    你不应该关心下一个谁会得到锁。

        2
  •  5
  •   Dirk Vollmar    17 年前

    你的问题意味着你在寻找FIFO行为?那么你可能想试试Jakub Sloup的这段代码:

    Monitor/lock which remember order in C# to simulate FIFO

        3
  •  4
  •   ChrisW    17 年前

    假设它类似于Win32,那么答案是它可能是FIFO,但也可能不是(它是其他东西)。例如,优先级较高的线程应该是第一个;但线程的优先级可能会暂时提高或降低,具体取决于它们最近在做什么。

        4
  •  4
  •   Spence    17 年前

    作为对您问题的回答,所有线程都会收到monitor.pulse,然后它将争夺下一个获得锁的人。

        5
  •  3
  •   C. Ross trotttrotttrott    17 年前

    根据定义,答案是不确定的。