代码之家  ›  专栏  ›  技术社区  ›  MandoMando

哪些场景构成.Net中的非默认执行上下文?

  •  1
  • MandoMando  · 技术社区  · 14 年前

    WaitHandle .WaToWiTo()具有一个ExtEnrices选项,允许在另一个资源锁之前临时释放资源锁。这在某些可能发生死锁或线程不足的情况下非常有用。

    这个 msdn documentaiton 讨论一个dondefault上下文。它们仅指构成在涉及ContexBoundObject的非默认上下文中的示例参见( Related Qusetion ).

    其他同步选项(如Monitor.Enter()、Lock{}语句)是否也构成非默认上下文?还有哪些场景会将线程执行置于非默认上下文中?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Hans Passant    14 年前

    这是一个棘手的问题,我对它了解不够。我知道的是它与远程处理场景相关。通过传递True,可以避免通信阻塞,直到解决等待并允许发送其他消息。是的,可以避免死锁,但会导致同步问题。

    WaitOne()的这个参数造成了太多的混乱和FUD,以至于.NET 2.0sp1有一个破坏兼容性的更改。他们添加了WaitOne(int)和WaitOne(TimeSpun)重载,以避免猜测ExtEnror参数的正确值。通常应该是假的。