日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

在.NET上執(zhí)行多線程操作要考慮的兩大因素(2)_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:Flex與.NET互操作:基于WebService的數(shù)據(jù)訪問
Flex提供了mx:WebService、mx:HTTPService和mx:RemoteObject標(biāo)簽來直接訪問遠(yuǎn)程數(shù)據(jù),這用于與各種不同語言環(huán)境開發(fā)提供的遠(yuǎn)程服務(wù)端數(shù)據(jù)源(如WebService)進(jìn)行數(shù)據(jù)交互通信顯得更加容易. 本文以.NET平臺下C#語言開發(fā)的WebService作為遠(yuǎn)程數(shù)據(jù)源,詳細(xì)介紹Fl

在.NET架構(gòu)中,最簡單也最常見的解決競爭條件的方法是使用“臨界區(qū)”。而在VB.NET中,該語句是“加鎖”,并在C#中是“鎖定”,這兩種語句都是把對象作為參數(shù)。其他嘗試鎖定相同對象實(shí)例使用的臨界區(qū)(包括上文所指的)會阻止運(yùn)行直到鎖定解除,這樣每次就只有一個臨界區(qū)運(yùn)行。我們先前舉例的一段代碼現(xiàn)在看起來是這樣的:

以下為引用的內(nèi)容:

  int x = 5;

  object lockObject = new object();

  Monitor.Enter(lockObject);

  x = x 10;

  Monitor.Exit(lockObject);

什么是監(jiān)控器可以提供而臨界區(qū)做不到的呢?答案是沒有。除非你在解鎖后需要更細(xì)粒度的控制權(quán)。有些復(fù)雜的代碼可能需要鎖定或長或短的一段時間,這都取決于運(yùn)行的情況,比方一個變量的值。在這種情況下,選擇監(jiān)控器要比需選擇臨界區(qū)更合適。

另一個值得關(guān)注的有關(guān)數(shù)據(jù)完整性的問題是死鎖。當(dāng)多個線程鎖定資源導(dǎo)致它們都不能夠繼續(xù)運(yùn)行時,就會出現(xiàn)死鎖。例如:

以下為引用的內(nèi)容:

  Thread A:

  Monitor.Enter(object1);

  Monitor.Enter(object2);

  //Do work

  Monitor.Exit(object1);

  Monitor.Exit(object2);

  Thread B:

  Monitor.Enter(object2);

  Monitor.Enter(object1);

  //Do work

  Monitor.Exit(object1);

  Monitor.Exit(object2);

如果線程A和線程B都調(diào)用它們的第一段語句并且同時完成運(yùn)行,那它們都無法調(diào)用它們的第二段語句——這就是一個死鎖。所以編寫代碼的時候細(xì)心,要仔細(xì)想清楚怎樣編寫代碼才更有利。死鎖的發(fā)生常見于新手,因為他們過分設(shè)置鎖定把它變得太詳細(xì)了。如果代碼被嵌套鎖定通常表明需要對編寫的代碼加以認(rèn)真檢查。

分享:淺談在.NET應(yīng)用程序中進(jìn)行Erlang風(fēng)格的并行編程
Erlang能夠用來編寫高度可伸縮的并行應(yīng)用程序,其中經(jīng)常會出現(xiàn)數(shù)以百萬計的輕量級組件,這種類似于線程的組件被稱之為actor。不幸的是,這往往需要您使用Erlang這種相對神秘的編程語言重寫所有代碼。不過我們也有其他選擇,例如使用名不見經(jīng)傳的CCR平臺來進(jìn)

共2頁上一頁12下一頁
來源:模板無憂//所屬分類:.Net教程/更新時間:2009-06-11
相關(guān).Net教程