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

構(gòu)建ASP.NET線程安全集合淺析

開發(fā) 后端
構(gòu)建ASP.NET線程安全集合在實際開發(fā)中是十分重要的一部分,那么構(gòu)建ASP.NET線程安全集合需要注意哪些方面呢?本文就向你介紹這方面的情況,希望對你了解構(gòu)建ASP.NET線程安全集合有所幫助。

大部分ASP.NET線程安全的集合都有一些基礎(chǔ)性的缺陷:雖然每個操作都是線程安全的,但是多個操作無法組合起來使用。這意味著一些基本的執(zhí)行順序,例如在彈出頂部元素之前檢查棧內(nèi)元素數(shù)量會出現(xiàn)潛在的危險。盡管已經(jīng)有一些API設(shè)法將某些操作綁定起來(例如.NET 4的Coordination Data Structures),但是它們往往會引入丑陋的方法(如TryDequeue)。

.NET 1里的集合嘗試了另一種方式,它們會對外暴露一個SyncRoot屬性,而不是在內(nèi)部進行鎖定。雖然SyncRoot仍然是同步對象的默認(rèn)機制,但是.NET 2已經(jīng)拋棄了SyncRoot/Wrapper設(shè)計模式。

那么該如何創(chuàng)建一個可用的組合式API呢?Jared Parson認(rèn)為集合不應(yīng)該直接暴露出ASP.NET線程安全的API,所有的方法都應(yīng)該屬于一個臨時的對象,而這個對象只有在您鎖定集合的時候才被創(chuàng)建出來。這個臨時對象是集合的“鑰匙”,只有鑰匙的持有者才能獲取集合內(nèi)容。

以下示例為Jared Parsons的線程安全隊列:

  1. static void Example1(ThreadSafeQueue queue) {    
  2.   using (var locked = queue.Lock()) {       
  3.    if (locked.Count > 0) {         
  4.      var first = locked.Dequeue();       
  5.     }    
  6.   }  

名為locked的對象本身不是ASP.NET線程安全的,但是開發(fā)人員只有在using代碼塊中才能正確執(zhí)行操作。在遵守了這一簡單規(guī)則之后,開發(fā)塊里的所有代碼就是線程安全的。Jared解釋道:

與大部分ASP.NET線程安全的設(shè)計一樣,這些代碼還是有被誤用的可能:

1、在ILockedQueue銷毀之后卻繼續(xù)使用它。這種做法應(yīng)該被禁止,用戶現(xiàn)有的知識一般足以避免這個問題。此外一些靜態(tài)檢查工具,例如FxCop,會把這種做法識別為一個錯誤。我們也可以使用一種更嚴(yán)厲的做法來阻止此類情況出現(xiàn):添加一個disposed標(biāo)記,并在每個方法中進行檢查。

2、如果用戶在跨越多個Lock語句的情況下保留某個值(例如Count),那么可能會對集合的狀況出現(xiàn)錯誤的判斷和假設(shè)。

3、如果用戶沒有正確銷毀ILockedQueue,那么這個對象會被***鎖定。幸運的是,對于實現(xiàn)了IDisposable的對象,F(xiàn)xCop同樣會將這種做法識別為一個錯誤——盡管這不是一個萬分穩(wěn)妥的機制。

4、無法確定用戶是否會長期持有ILockedQueue對象。雖然IDisposable一般包含著“短期”的意味,但是這并不能做出***的保證。

5、ILockedQueue并不是線程安全的。雖然一般情況下用戶不會把IDisposable對象交給多個線程使用,但這也是必須考慮到的情況之一。

構(gòu)建ASP.NET線程安全集合的相關(guān)信息就向你介紹到這里,希望對你有所幫助。

【編輯推薦】

  1. ASP.NET緩存概念及其應(yīng)用淺析
  2. ASP.NET緩存分析和實踐淺析
  3. ASP.NET數(shù)據(jù)庫緩存淺析
  4. ASP.NET源碼之自定義控件DateTimePicker
  5. ASP.NET文件下載函數(shù)使用淺析
責(zé)任編輯:仲衡 來源: 酷勤網(wǎng)
相關(guān)推薦

2009-07-23 17:05:11

ASP.NET安全性

2009-07-20 15:57:42

ASP.NET安全架構(gòu)

2009-07-29 11:25:40

2009-08-05 18:36:12

ASP.NET Che

2009-07-24 13:41:15

ASP.NET AJA

2009-08-05 15:50:13

ASP.NET優(yōu)點

2009-07-31 12:43:59

ASP.NET MVC

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設(shè)計

2009-07-29 09:34:54

IsPostBack屬ASP.NET

2009-08-04 17:16:16

ASP.NET代碼優(yōu)化

2009-08-05 16:17:29

ASP.NET For

2009-08-05 16:50:09

ASP.NET For

2009-07-24 18:02:46

ASP.NET編程

2009-08-05 16:53:14

ASP.NET組件設(shè)計

2009-08-03 10:07:20

ASP.NET Ses

2009-08-10 14:55:43

ASP.NET htt

2009-08-05 13:16:43

ASP.NET URL

2009-07-27 17:25:53

ASP.NET驗證控件

2009-08-10 18:19:37

ASP.NET安裝環(huán)境

2009-07-27 15:34:11

MembershipASP.NET
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美在线激情 | 精品国产乱码久久久久久图片 | 国产日韩视频 | 中国一级特黄毛片大片 | 色综合欧美 | 精品国产一区二区三区久久狼黑人 | 国产一区二区在线免费 | 在线精品亚洲欧美日韩国产 | 毛片免费看 | 在线观看中文字幕 | 亚洲视频免费 | 国产高清一区二区三区 | xxx.在线观看 | 在线亚洲人成电影网站色www | 毛片网在线观看 | 国产一区二区三区在线免费 | 精品国产一区二区三区久久久四川 | 中文字幕乱码视频32 | 在线高清免费观看视频 | 亚洲视频一 | 成人二区 | 一区二区电影 | 亚洲精品一区在线 | 成人一区二区三区在线观看 | 亚洲在线一区二区 | 免费视频久久 | 日本91av视频 | 亚洲一一在线 | 小川阿佐美pgd-606在线 | 成人国产精品久久久 | 天天操天天操 | 成人午夜精品一区二区三区 | 日本一区二区三区视频在线 | 一区二区三区在线免费观看 | 成人国产一区二区三区精品麻豆 | av中文网 | 久久精品免费一区二区三 | 国产一级视频免费播放 | 日韩欧美国产一区二区 | 欧美国产精品一区二区三区 | 337p日本欧洲亚洲大胆精蜜臀 |