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

.NET 4.0 Beta 2改進對協調數據結構類庫

開發 后端
在這里我們將討論的是.NET 4.0 Beta 2改進對協調數據結構類庫,希望本文對大家有所幫助。

對于.NET 4.0 Beta 2,大家可能還處于試用階段,本文將討論的是.NET 4.0 Beta 2改進對協調數據結構類庫,希望對大家有所幫助。

協調數據結構(Coordination Data Structures,CDS)被設計為在并發環境下使用的組件,它也可用于構建復雜的并發框架。此外,它還包含了高級的同步工具,如Barrier,多種線程安全的集合,以及多種構建Future模型的方式。

#T#

Barrier類的作用是在多個階段的操作之間創建同步點。在使用之前,Barrier需要知道有多少線程將會使用它。每個線程達到檢查點時,便要調用Barrier的SignalAndWait方法。這么做會引起阻塞,當所有線程都調用了這個方法后,便會同時釋放所有線程。這個過程可以重復多次,每個這樣的迭代都會增加其CurrentPhaseNumber屬性。用于監控的代碼可以隨時檢查正在使用Barrier的線程,以及還沒有到達檢查點的線程數量。CurrentPhaseNumber為Int64類型,因此每個Barrier可以支持多達9,223,372,036,854,775,807個階段(之前的beta版本使用Int32,因此受限于40億個階段)。

BlockingCollection類用于生產者/消費者場景。它最簡單的使用模式便是作為一個線程安全的隊列,并且在隊列為空時阻塞消費者。為了避免隊列元素過多,你也可以為它設置一個最大值。在到達最大容量時,生產者便會被阻塞,直到某個消費者取出元素。當BlockingCollection填充完畢之后,生產者可以將其標記為完成。這樣便無法添加更多的元素,同時也會釋放了所有的消費者。

BlockingCollection并非只能單獨使用,多個 BlockingCollection可以一起使用。在這種模式下,生產者和消費者可以指明為任意一個BlockingCollection添加或刪除元素,而不在乎某個特定的集合。這么做可以充分在集合之間的實現某種負載均衡。

ConcurrentDictionary類支持原子性的添加和更新操作。為了實現這個功能,你需要向GetOrAdd及AddOrUpdate方法中傳入一個委托。如果當前鍵不在集合中便會調用Add委托。如果鍵存在,那么便會返回對應的值,或是將其傳遞給Update委托。

原本還有計劃實現一個并行鏈表,但是這點在beta 2中被取消了。Joshua Phillips寫到,他們無法為這個類在性能和可用性之間做出平衡:

在每個軟件專業人士的職業生涯中,總會遇到某些情況需要放棄他們所鐘愛的東西。他們的發明雖然很棒,但總會有這樣那樣的原因,導致這些東西失去存在的充分價值。我知道你們對Beta 1中的ConcurrentLinkedList很感興趣,但是我們打算放棄它了(雖然之前我們沒有給出提示)。很不幸,經過一段時間的研究,我們發現無法同時提供很好的可用性以及性能。似乎目前已經有許多線程安全的鏈表實現,它們的伸縮性很好,但是這種高度伸縮能力是建立在某些假設或是一些奇怪的設計方式上的,它們總會在一些特別的情況下引起嚴重的性能問題。移除CLL讓我們很受傷,但是它的性能的確無法滿足發布的要求。

對于需要延遲執行的函數,目前有了兩個選擇。如果你想使用future模型來傳遞那些只在需要時才調用的函數,那么可以使用Lazy類。這個類封裝了一個函數,保證它只在第一次訪問Value屬性的時候才執行,以后對于Value屬性的多次訪問不會引起函數的重復調用。

第二個選項則是LazyInitializer模塊。EnsureInitialized方法是一個保證初始化完成的輕量級做法,它在(且僅在)目標變量為null的情況才調用委托。這保證了目標變量只會設置一次。不過,如果沒有使用同步對象的話,委托可能會被幾個并發線程調用多次。

責任編輯:彭凡 來源: InfoQ
相關推薦

2009-10-26 09:16:08

BigInteger類

2009-07-30 13:17:44

STM.NET.NET 4 Beta

2009-08-03 09:21:35

.NET 4.0 Be.NET

2009-05-08 10:09:30

.NET4.0PLINQ

2009-09-04 16:28:05

ASP.NET 4.0

2010-07-19 09:01:54

.NET 4.0緩存

2009-07-10 09:41:08

WCF服務配置.NET 4.0

2009-07-14 17:10:44

struts2webwork

2010-01-27 15:58:35

C++數據結構

2013-07-30 14:10:51

iOS 7 Beta

2023-10-31 08:51:25

數據結構存儲數據

2011-03-31 15:41:51

Cacti數據表結構

2019-06-12 22:51:57

Redis軟件開發

2012-04-28 14:21:47

Java數據結構線性結構

2010-06-30 09:26:43

Firefox 4.0

2010-09-13 10:02:11

Firefox 4.0

2021-05-12 14:09:35

鏈表數據結構線性結構

2020-10-21 14:57:04

數據結構算法圖形

2009-12-21 14:55:49

ADO.NET類庫

2023-11-12 21:49:10

Redis數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩av在线一区二区 | 久一久| 99久久久久国产精品免费 | 久久综合久久自在自线精品自 | 亚洲国产精品人人爽夜夜爽 | 国产精品一区二区av | 精品国产欧美一区二区 | 亚洲精品99 | 国产午夜精品视频 | 亚洲国产精品久久久久秋霞不卡 | 夜夜精品视频 | 91网站在线看 | 中文字幕亚洲欧美 | 狠狠艹 | 久久国产免费 | 日韩亚洲一区二区 | 日韩高清国产一区在线 | 日韩精品成人在线 | 一区中文字幕 | 99久久久久久 | 国产成人免费在线 | 国产男女猛烈无遮掩视频免费网站 | 妞干网福利视频 | 在线午夜电影 | 一级大黄色片 | 亚洲欧美在线一区 | 日韩欧美三级电影在线观看 | 日本成人一区二区 | 夜操 | 免费看一级毛片 | 亚洲精品国产一区 | 亚洲国产欧美在线 | 日韩免费一区二区 | 免费观看成人性生生活片 | 亚洲精品久久久一区二区三区 | 日本欧美视频 | 日本精品视频在线观看 | 精品免费在线 | www.亚洲视频.com | 欧美精品一二区 | 日韩电影中文字幕 |