繁体   English   中英

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

[英]What scenarios constitute a Non-Default Execution Context in .Net?

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

msdn文档讨论了dondefault上下文。 它们仅引用构成非默认上下文中涉及ContexBoundObject的示例,请参见( Related Qusetion )。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM