日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

13.4 对锁和字段风格的事件的微小改变

發(fā)布時間:2025/5/22 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 13.4 对锁和字段风格的事件的微小改变 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

13.4.1 健壯的鎖

1 class Program 2 { 3 static object locker = new object(); 4 static void Main(string[] args) 5 { 6 List<string> list = new List<string>(); 7 lock (locker) 8 { 9 list.Add("item"); 10 } 11 12 //在C# 4之前——包括使用C# 4處理.NET 4之前的東西時——以上語句將被有效地編譯為下面 的代碼: 13 14 object tmp = locker; 15 Monitor.Enter(tmp); 16 try 17 { 18 list.Add("item"); 19 } 20 finally 21 { 22 Monitor.Exit(tmp); 23 } 24 } 25 }

這沒有問題,并且它還避免了一些問題。我們要確保釋放的監(jiān)視器與獲取的是同一個,因此
首先將被鎖定內(nèi)容的引用復(fù)制到一個臨時局部變量內(nèi) 。這同時意味著鎖的表達(dá)式只會進(jìn)行一
次求值。然后我們在 try 語句塊之前獲取鎖。因此如果獲取鎖的線程異常終止,則不會執(zhí)行
finally 塊中釋放鎖的語句。這還將導(dǎo)致另一個問題:如果線程在獲取鎖之后和進(jìn)入 try 塊之前
異常終止,我們也無法釋放鎖。這可能會導(dǎo)致死鎖——其他線程將一直等待該線程釋放鎖。盡管
CLR一直以來都在努力阻止類似事情發(fā)生,但也不是完全沒有可能發(fā)生。
我們所需要的,是一種原子地獲取鎖并知道它已經(jīng)被獲取的方式。幸運(yùn)的是,.NET 4新增加
了 Monitor.Enter 的重載,C# 4的編譯器將使用這種方式:

1 class Program 2 { 3 static object locker = new object(); 4 static void Main(string[] args) 5 { 6 List<string> list = new List<string>(); 7 object tmp = locker; 8 9 bool acquired = false; 10 try 11 { 12 Monitor.Enter(tmp, ref acquired); 13 list.Add("item"); 14 } 15 finally 16 { 17 if (acquired) 18 { 19 Monitor.Exit(tmp); 20 } 21 } 22 } 23 }

13.4.2 字段風(fēng)格的事件

值得簡單一提的是,C# 4對字段風(fēng)格事件的實現(xiàn)方式作了兩處修改。盡管它們是潛在的破壞性更改,但似乎不會對你產(chǎn)生什么影響。
總之,字段風(fēng)格的事件像字段一樣進(jìn)行聲明,不再包含顯式的 add/remove 語句塊,如下:

public event EventHandler Click;

首先,線程安全的實現(xiàn)方式發(fā)生了改變。在C# 4之前,字段風(fēng)格的事件生成的代碼鎖定的是
this (實例事件)或聲明事件的類型(靜態(tài)事件)。而C# 4中,編譯器實現(xiàn)了線程安全,對原子
的訂閱和退訂使用了 Interlocked.CompareExchange<T> 。與之前對 lock 語句的修改不同,

面對舊版本的.NET Framework時,這項更改同樣適用。
其次,在聲明事件的類中,事件名稱的含義改變了。以前,在聲明事件的類中訂閱(或退訂)
事件——如 Click += DefaultClickHandler; ——將直接使用后臺字段,完全跳過 add/remove
實現(xiàn)。現(xiàn)在情況變了,使用 += 或 -= 時,事件的名稱就指向事件本身,而不再是后臺字段。當(dāng)名
稱用于其他意圖時(通常為分配或調(diào)用),則仍然指向后臺字段。
盡管在平時使用時你可能不會注意這兩處改變,不過它們是合理的,可以使一切變得整潔。
Chris Burrows在他的博客中深入研究了這個話題,想了解更多內(nèi)容可以參考http://mng.bz/Kyr4。

?

轉(zhuǎn)載于:https://www.cnblogs.com/kikyoqiang/p/10116459.html

總結(jié)

以上是生活随笔為你收集整理的13.4 对锁和字段风格的事件的微小改变的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线免费看av片 | 成人午夜视频免费在线观看 | 日本人妖网站 | 欧美 日韩 国产 精品 | 中文字幕免费观看视频 | 三级色网站 | 欧美日韩高清在线观看 | 五月天精品 | 人妻洗澡被强公日日澡电影 | 国产精品成人免费视频 | 古代玷污糟蹋np高辣h文 | av免费资源 | 婷婷国产一区二区三区 | 久久国产中文字幕 | 涩涩涩999| 日韩一区二区免费看 | 日韩欧美综合在线 | 亚洲福利社 | 自拍偷拍av | 国产 欧美 自拍 | 69日本xxxxxxxxx30 在线波多野结衣 | 中文不卡av | 国产精品羞羞答答 | youjizz在线视频| 尤物网站在线播放 | 伊人网在线观看 | 免费视频色 | 中文字幕亚洲激情 | 久久r精品 | 骚黄网站 | 亚洲大片 | 91精品国产色综合久久不卡电影 | 日韩成人短视频 | 内谢少妇xxxxx8老少交视频 | 91精品国自产在线偷拍蜜桃 | 色综合狠狠爱 | 欧美激情一区二区三区免费观看 | 西西毛片| 国产精品第 | 96精品在线 | 91蜜桃婷婷狠狠久久综合9色 | 亚洲专区区免费 | 草久在线| 久操亚洲| 波多野一区 | 爱爱免费视频网站 | 亚洲男人网站 | 日韩在线一卡二卡 | 99999视频| 国产中文字幕在线观看 | 国产精品天美传媒沈樵 | 中文字幕精品一区二区精品 | 亚洲精品乱码 | 亚洲欧美日韩中文字幕在线观看 | 国产成人福利在线 | 成年人在线免费观看网站 | 午夜va | 男人透女人免费视频 | 打屁股无遮挡网站 | 久久精品2 | 少妇人妻综合久久中文字幕 | 日韩另类视频 | 欧美毛片视频 | 国产a线| 5级黄色片| 亚洲欧美日韩一区二区三区在线观看 | 在线观看特色大片免费网站 | 欧美成人吸奶水做爰 | 婷婷91| 欧美人xxxx| 国产精品麻豆入口 | 亚洲视频福利 | 欧洲一区二区三区在线 | 无码少妇一级AV片在线观看 | 欧美少妇xxxxx | 国产寡妇色xxⅹ交肉视频 | 亚洲午夜久久久久久久久久久 | 亚洲色婷婷一区二区三区 | 亚洲手机看片 | 骚虎免费视频 | 黄色免费在线网址 | 日日操夜夜干 | av三级网 | 欧美一级乱黄 | 小色瓷导航| 99在线精品视频免费观看软件 | 自拍偷拍第1页 | 亚洲精品v天堂中文字幕 | 老鸭窝成人 | 欧美日韩成人在线视频 | 日日夜夜综合 | 在线观看国产三级 | 国产精品1区2区3区4区 | 日本天堂网在线观看 | 一个人看的www日本高清视频 | 色妹av | 国产福利99| 欧美成人精品一区二区男人看 | 情侣在线视频 |