這些實際上是三個不同的概念還是我混亂? (我一直在閱讀有關線程和垃圾收集物品一起,混淆了自己。)「關鍵部分」,「關鍵區域」和「約束執行區域」之間的區別
「臨界區」 - 我想這可能只是對於你不想多線程的代碼段術語同時訪問,即內部鎖和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