成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#中Finally的一個不太常見的用法

開發 后端
這其實是一個小的技巧:放在Finally中的代碼可以防止執行線程在執行過程中被另一個線程用調用了Thread.Abort()或Thread. Interrupt()打斷.從而保證這段代碼執行的完整性。

最近在看.net BCL 傳送門 的源碼. 在

System.Collections.Concurrent.ConcurrentQueue

中看到一段有意思的代碼.注意這段代碼是寫在ConcurrentQueue這個用于并發中的隊列. 注意,這是一個無鎖隊列的實現.

  1. try 
  2.  { }  
  3.  finally 
  4.  {  
  5.      newhigh = Interlocked.Increment(ref m_high);  
  6.      if (newhigh <= SEGMENT_SIZE - 1)  
  7.      {  
  8.          m_array[newhigh] = value;  
  9.          m_state[newhigh].m_value = true;  
  10.      }  
  11.      if (newhigh == SEGMENT_SIZE - 1)  
  12.      {  
  13.          Grow();  
  14.      }  
  15.  } 
有意思嗎?代碼中使用了一個空的Try代碼塊.然后把代碼全都寫在了Finally塊.這么做的目地何在呢?

這其實是一個小的技巧:放在Finally中的代碼可以防止執行線程在執行過程中被另一個線程用調用了Thread.Abort()或Thread. Interrupt()打斷.從而保證這段代碼執行的完整性。

舉個例子: 如果不將上面代碼放到Finally中運行.假如正好有一個線程A執行到 m_array[newhigh] = value;而另外一個線程B調用了線程A的Thread.Abort() 那么m_array[newhigh] = value; 以后的代碼可能沒有機會得到執行.那么將引起ConcurrentQueue的不完整。

而放到Finally中的代碼,即使線程B在線程A執行時調用了Thread.Abort()或Thread. Interrupt()方法時也能保證Finally塊中的代碼被完整的執行。

事實上,這個特性是在.net framework2.0中引入的.在.net 1.1時Finally沒有這個作用.另外 Tread.Abort有可能打斷線程內的靜態構構函數執行。

另外我認為同樣的功能也可以用這個Thread.BeginCriticalRegion 和Thread.EndCriticalRegion(); 來實現。

原文鏈接:http://www.cnblogs.com/listhome/p/3664300.html

責任編輯:林師授 來源: 博客園
相關推薦

2009-07-30 18:18:27

C#時間計算

2009-07-22 17:15:04

C#實現

2009-08-18 17:19:33

C#事件模型

2011-07-06 10:47:52

C#using

2009-08-26 14:48:21

C#打印分頁

2011-04-25 14:42:10

C#lock

2009-08-26 15:53:42

C#數據訪問XML

2009-08-25 01:46:00

C# WINDOWS服

2009-08-27 15:22:27

C#中的GET與SET

2024-03-19 14:18:48

C#后端編程

2009-08-31 14:19:20

C#打開一個文件

2009-08-25 15:23:16

C#子線程

2009-09-01 16:03:32

C#單元測試

2009-08-31 13:53:03

C#創建一個文件

2009-08-19 14:15:42

C# 復合控件

2023-11-30 12:03:06

linuxAwk

2023-10-26 11:22:32

2013-06-05 10:11:20

索引器C#

2013-02-25 10:18:08

ThreadMsgC#

2009-09-01 16:14:06

C#窗口抖動
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清视频 | 亚洲天堂av网 | 91精品在线观看入口 | 天天摸天天干 | h视频亚洲 | 成人国产网站 | 91操操操| 91精品国产91久久久久游泳池 | 在线观看亚洲一区二区 | 中文字幕亚洲区一区二 | 国产精品综合视频 | 亚洲综合色自拍一区 | 久久精品视频网站 | 日韩国产中文字幕 | 久久久久久黄 | 亚洲精品一区二区三区在线 | 四虎影院在线播放 | av毛片在线播放 | 91久久精品国产91久久性色tv | 男女视频在线观看网站 | 久草在线青青草 | 天天躁人人躁人人躁狂躁 | 久久久久久亚洲精品 | 在线一级片 | 国产精品二区三区在线观看 | 欧美一区二区三区在线 | 亚洲自拍偷拍视频 | 夜夜爽99久久国产综合精品女不卡 | 国产婷婷综合 | 91在线精品秘密一区二区 | 欧美日韩在线一区 | 成人在线免费视频 | 欧美日韩亚洲国产 | 国产精品一二三区 | 自拍偷拍精品 | 久久久成人动漫 | 亚洲第一av | 热久久999 | 久久久久国产精品午夜一区 | 男人av的天堂 | 成人视屏在线观看 |