这些实际上是三个不同的概念还是我混乱? (我一直在阅读有关线程和垃圾收集物品一起,混淆了自己。)“关键部分”,“关键区域”和“约束执行区域”之间的区别
“临界区” - 我想这可能只是对于你不想多线程的代码段术语同时访问,即内部锁和Monitor.Enter/Exit语句?
“关键区域” - 这里没有真正的线索 - MSDN说的是“这告诉主机,该部分中引发的异常可能会产生更广泛的影响”。而且“CLR的主机,例如Sql Server”可以选择“以不同方式”处理在关键区域内抛出的异常。不同的是如何?为什么?而且,最重要的是,在我需要将代码标记为关键区域的现实世界场景中,
“受限制的执行区域” - 我在阅读垃圾回收文章中的CriticalFinalizerObject时发现了这个问题。
从MSDN我可以理解的是,这些区域之一的代码在某种程度上可以保证运行(但是如何?),因此不得抛出“带外”异常。
什么是out-of-band exception
? (我做过谷歌这个,但它只是问我是否意味着“越界异常”)。
是否有任何未处理的异常?还是只有某些类型的异常?而且,最重要的是,在真实世界的场景中,我可能需要一个“受限制的执行区域”吗?
因为我不太了解这些概念,所以我不确定这个问题除了“.NET”之外还需要什么标签。
我很确定你对关键部分的理解是正确的。 – Brian 2009-04-14 13:32:35
这是一个开始:)。我不确定我是否使用了正确的术语。我在关于锁定的文章中看到了“关键部分”。我只在Thread.BeginCriticalRegion的MSDN页面中看到“Critical Region”。我知道“受限制的执行区域”是因为它有一个MSDN页面。 – 2009-04-14 13:46:27