【问题标题】:What scenarios constitute a Non-Default Execution Context in .Net?哪些场景构成 .Net 中的非默认执行上下文?
【发布时间】:2010-06-22 17:04:14
【问题描述】:

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

msdn documentaiton 谈到了一个不默认的上下文。它们仅指构成涉及 ContexBoundObject 的非默认上下文中的示例,请参阅 (Related Qusetion)。

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

【问题讨论】:

    标签: c# .net multithreading synchronization


    【解决方案1】:

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

    WaitOne() 的这个参数引起了很多混乱和 FUD,以至于 .NET 2.0 SP1 发生了兼容性破坏性更改。他们添加了 WaitOne(int) 和 WaitOne(TimeSpan) 重载以避免不得不猜测 exitContext 参数的正确值。通常应该是 False。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 2017-08-30
      • 1970-01-01
      相关资源
      最近更新 更多