国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

強化VB.NET編程多線程句柄技巧

開發 后端
文章主要介紹了VB.NET編程,介紹了VB.NET編程中通常使用三類等待句柄:互斥對象、ManualResetEvent和AutoResetEvent。后兩種通常用于同步事件。

VB.NET編程經過長時間的發展,很多用戶都很了解VB.NET編程中多線程程序。多線程成為大多程序員苦惱的事,現在和大家交流一下多線程。多線程是可行的,因為操作系統是多任務的,它有模擬同一時刻運行多個應用程序的能力。盡管多數個人計算機只有一個處理器,但是現在的操作系統還是通過在多個執行代碼片斷之間劃分處理器時間提供了多任務。線程可能是整個應用程序,但通常是應用程序可以單獨運行的一個部分。操作系統根據線程的優先級和離最近運行的時間長短給每一個線程分配處理時間。多線程對于時間密集型事務(例如文件輸入輸出)應用程序的性能有很大的提高。VB.NET編程中通常使用三類等待句柄:互斥對象、ManualResetEvent和AutoResetEvent。后兩種通常用于同步事件。

1.互斥對象

互斥對象都是同步對象,它們只能在一個時刻由一個線程擁有。實際上,互斥這個名字衍生自互斥對象的所有權是相互排斥的。當線程請求獨占訪問某種資源時,它們請求互斥對象的所有權。因為在某個時刻只有一個線程能擁有一個互斥對象,其它線程在使用資源前必須等待互斥對象的所有權。WaitOne方法引發一個調用線程等待互斥對象的所有權。如果擁有互斥對象的線程正常終止,該互斥對象的狀態就被設置為signaled,下一個線程獲得它的所有權。

2.同步事件

同步事件用于通知其它的線程發生了某種事情或者某種資源可用。不要被它使用了"事件"這個詞迷惑了。同步事件與其它的VisualBasic事件不同,它是真正的等待句柄。與其它的等待句柄類似,同步事件有兩種狀態signaled 和nonsignaled。調用同步事件的某個等待方法的線程必須等待,直到其它線程調用Set方法給事件發信號。有兩個同步事件類。線程使用Set方法把ManualResetEvent實例的狀態設置為signaled。線程使用Reset方法或控制返回等待WaitOne調用把實例的狀態設置為nonsignaled。AutoResetEvent類的實例也可以使用Set設置為signaled,但是只要通知等待線程事件變為signaled,它們自動返回到nonsignaled。

下面的例子使用AutoResetEvent類同步線程池事務。

  1. SubStartTest()  
  2. DimATAsNewAsyncTest()  
  3. AT.StartTask()  
  4. EndSub  
  5. ClassAsyncTest  
  6. PrivateSharedAsyncOpDoneAsNewSystem.Threading.AutoResetEvent(False)  
  7. SubStartTask()DimTpoolAsSystem.Threading.ThreadPoolDimargAsString="SomeArg" 
  8. Tpool.QueueUserWorkItem(NewSystem.Threading.WaitCallback(_AddressOfTask),arg)'對一個事務進行排隊  
  9. AsyncOpDone.WaitOne()'等待該線程調用SetMsgBox("Threadisdone.")  
  10. EndSubSubTask(ByValArgAsObject)  
  11. MsgBox("Threadisstarting.")  
  12. System.Threading.Thread.Sleep(4000)'等待4秒.  
  13. MsgBox("Thestateobjectcontainsthestring"&CStr(Arg))  
  14. AsyncOpDone.Set()'發信號表明該線程完成了  
  15. EndSub  
  16. EndClass 

3.監視對象和同步鎖

監視對象確保代碼塊的運行不被運行在其它線程中的代碼打斷。換句話說,其它線程中的代碼不能運行,直到被同步的代碼塊結束。在VisualBasic .NET中使用SyncLock關鍵字來簡化監視對象的訪問。在VisualC# .NET中使用Lock關鍵字。

例如,假定你有一個程序,它重復地、異步讀取數據并顯示結果。使用優先多任務操作系統,正在運行的線程可以因為操作系統允許其它的線程運行而被打斷。如果沒有同步,數據正在顯示時,顯示數據的對象被其它的線程修改,有可能得到的是部分更新的數據視圖。SyncLock保證一段代碼持續運行,不被打斷。下面的例子顯示了怎樣使用SyncLock給顯示過程提供數據對象的獨占訪問。

  1. ClassDataObject  
  2. PublicObjTextAsString  
  3. PublicObjTimeStampAsDate  
  4. EndClassSubRunTasks()  
  5. DimMyDataObjectAsNewDataObject()  
  6. ReadDataAsync(MyDataObject)  
  7. SyncLockMyDataObject  
  8. DisplayResults(MyDataObject)  
  9. EndSyncLock  
  10. EndSub  
  11. SubReadDataAsync(ByRefMyDataObjectAsDataObject)'添加異步讀取和處理數據的代碼  
  12. EndSubSubDisplayResults(ByValMyDataObjectAsDataObject)'添加顯示結果的代碼  
  13. EndSub  

Interlocked類

你可以使用Interlocked類的方法防止多個線程同時更新或比較同一個值的問題發生。這個類的方法讓你安全地增加、減少、交換和比較來自任何線程的值。下面的例子演示了怎樣使用Increment方法增加一個運行在獨立線程上的多個過程共享的變量的值。

  1. SubThreadA(ByRefIntAAsInteger)  
  2. System.Threading.Interlocked.Increment(IntA)  
  3. EndSub  
  4. SubThreadB(ByRefIntAAsInteger)  
  5. System.Threading.Interlocked.Increment(IntA)  
  6. EndSub 

ReaderWriter鎖

在有些情況下,你可能希望只在寫數據時鎖定資源,在數據沒有更新完前允許多個客戶同時讀數據。某個線程正在修改資源時,ReaderWriterLock類加強了對該資源的獨占訪問,但是允許讀取資源的非獨占訪問。ReaderWriter鎖是排他鎖的一個有用的備選方案,排他鎖引起其它線程等待,即使這些線程不需要更新數據。下面的例子演示了怎樣使用ReaderWriter調整來自多個線程的讀和寫操作。

  1. ClassReadWrite  
  2. 'ReadData和WriteData方法可以被多個線程安全地調用  
  3. PublicReadWriteLockAsNewSystem.Threading.ReaderWriterLock()  
  4. SubReadData()'這個過程從數據源讀取信息。在允許其它線程調用ReadData時,讀取鎖放置任何數據寫入直到讀取完成  
  5. ReadWriteLock.AcquireReaderLock(System.Threading.Timeout.Infinite)Try'此處執行數據操作  
  6. FinallyReadWriteLock.ReleaseReaderLock()'釋放讀取鎖  
  7. EndTry  
  8. EndSubSubWriteData()'這個過程向數據源寫信息。寫入鎖防止數據被讀取或者寫入知道線程完成寫操作。  
  9. ReadWriteLock.AcquireWriterLock(System.Threading.Timeout.Infinite)Try'此處執行寫操作  
  10. FinallyReadWriteLock.ReleaseWriterLock()'釋放寫入鎖  
  11. EndTry  
  12. EndSub  
  13. EndClass 

結論

多線程處理是可伸縮的、容易響應的應用程序的關鍵。VB.NET編程支持加強的、多線程開發模型,它使開發者迅速擁有了開發多線程應用程序的能力。
◆VisualBasic .NET使用新的.NET框架組件類,它使建立多線程應用程序更容易。
◆記住盡管多線程能提高性能,但是每個線程有建立線程需要的附加內存和保持它運行需要的處理器時間的花消。
◆線程的屬性和方法控制著線程間的交互操作,并且決定什么時候資源可以給運行的線程使用。
◆盡管多線程看起來帶來了混亂,但是你可以使用同步技術控制正在運行的線程。
◆盡管多線程增加了應用程序的復雜性,但是它通過高效率分配可用資源提高了應用程序的可伸縮性。

使用本文討論的技術,你可以開發和處理處理器密集型事務的專業應用程序。

【編輯推薦】

  1. 簡單概括VB.NET API函數
  2. 講述VB函數之API函數快速入門
  3. Visual Basic使用對象全面解析
  4. 全面分析Visual Basic使用技巧
  5. 講解VB.NET語言學習經驗
責任編輯:田樹 來源: 博客
相關推薦

2009-10-20 10:23:08

VB.NET多線程編程

2009-11-10 13:08:13

VB.NET編程技巧

2010-01-18 18:06:07

VB.NET多線程

2009-10-23 09:26:09

VB.NET多線程

2009-10-10 16:15:49

VB.NET開發多線程

2010-01-08 10:48:05

VB.NET多線程

2010-01-11 16:04:10

VB.NET使用wit

2009-10-27 12:20:06

VB.NET多線程應用

2009-10-23 17:03:18

VB.NET事件編程

2009-10-12 15:44:26

VB.NET動態編碼技

2010-01-18 18:20:49

VB.NET使用API

2009-11-02 15:16:07

VB.NET編程

2009-10-20 16:17:37

VB.NET Word

2009-11-02 15:08:58

VB.NET Obje

2010-01-14 17:11:17

VB.NET枚舉

2009-10-14 15:34:29

VB.NET窗體編程模

2009-10-12 13:11:48

VB.NET使用線程

2009-10-12 13:32:58

VB.NET線程構造器

2009-10-12 13:19:14

VB.NET線程同步

2010-01-14 15:44:17

VB.NET數據綁定
點贊
收藏

51CTO技術棧公眾號

国产欧美精品| 成人国产一区二区三区精品| 日韩在线观看精品| 视频三区在线| 亚洲成av人片一区二区三区| 日本xxxx黄色| www.亚洲色图| 欧美少妇在线观看| 日本欧美韩国一区三区| 欧美二区在线| 国产日韩精品视频一区二区三区| 成人精品视频99在线观看免费| 综合激情五月婷婷| 久久久999精品视频| 国产高清不卡| 亚洲最新av在线网站| 成人一区福利| 亚洲欧洲一区二区三区在线观看| ririsao久久精品一区| 欧美变态tickle挠乳网站| 欧美美乳在线| 在线精品亚洲一区二区不卡| 国内精品一区视频| 欧美午夜精品理论片a级按摩| 欧美成人免费va影院高清| 韩国中文字幕av| 亚洲国产精品高清| 国内外成人免费在线视频| 亚洲午夜91| av一区二区三区四区电影| 国产一区日韩欧美| 成人黄色在线免费观看| 国产毛片一区| 一区二区三区四区欧美日韩| 国产乱国产乱300精品| www国产免费| 99久久婷婷国产综合精品电影| 青青草原av在线播放| 一色屋精品亚洲香蕉网站| 97久久久免费福利网址| 深夜成人在线| 欧美大奶子在线| 在线看成人短视频| 国产精品日韩欧美一区二区三区| 亚洲大片在线| 日韩欧美一区免费| 四虎黄色影院| 99久久精品一区二区| 日日橹狠狠爱欧美超碰| 日本一区二区三区四区在线视频| 欧美高清性xxxxhd| 国精一区二区三区| 久久久成人网| 亚洲人成网站在线在线观看| 欧美18一19xxx性| 欧美午夜视频在线| 日本在线中文电影| 丰满白嫩尤物一区二区| xx欧美撒尿嘘撒尿xx| 亚洲伦理在线精品| 污片视频在线免费观看| 91久久奴性调教| 久久国产精品美女| 欧美一区国产一区| 日日夜夜精品一区| 韩国日本不卡在线| 最新国产拍偷乱拍精品 | 老司机午夜精品99久久| 精品国产免费一区二区三区四区| 在线视频网站| 99久久免费国产| 久久天天狠狠| 国模无码大尺度一区二区三区| 天堂中文av| 久久久久久久久久av| 亚洲久草在线视频| 久久99精品久久久久久欧洲站 | 久久国产精品区| 香蕉视频一区| 黄网站免费在线播放| 欧美精品久久久久久久久久久| 亚洲精品a级片| **亚洲第一综合导航网站| 欧美tk丨vk视频| jiyouzz国产精品久久| 人人狠狠综合久久亚洲婷婷| h片在线播放| 中文字幕色一区二区| 欧美精品免费看| 亚洲丝袜精品丝袜在线| 日韩精品网站| 国产福利片在线| 亚洲国产日韩美| 欧美麻豆久久久久久中文| 日本高清视频一区二区| 国产精品主播直播| 欧美丝袜一区| 国产一区二区三区朝在线观看| 福利在线白白| 欧美与黑人午夜性猛交久久久| 99久久99久久精品免费观看| 一二三四社区在线视频6| 欧美激情精品久久久久久免费印度 | 国产综合 伊人色| 成人精品国产免费网站| 91中文在线| 99中文字幕在线观看| 97精品国产aⅴ7777| 亚洲一二三区在线观看| 亚洲天堂中文字幕在线观看| 日韩视频在线免费看| 中文字幕久久久av一区| 国产精品卡一卡二| 国产精品jk白丝蜜臀av小说| 裸体裸乳免费看| 在线一区二区日韩| 久久精品免视看| 四虎成人av| 三妻四妾完整版在线观看电视剧| 一道本在线观看视频| 亚洲福利视频专区| 国产一区二区三区免费看 | 精品一区二区成人免费视频| 亚洲精品视频免费观看| 亚洲国产aⅴ精品一区二区| 日韩av一区二区三区在线| 欧美成人三级电影在线| 性欧美欧美巨大69| 国产天堂av| 佐佐木明希av| 欧美高清性xxxxhd| 国产精品一区二区三| 第四色成人网| xxxx视频在线| 黑人巨大精品| 欧美成年网站| 欧美日本成人| 一区二区三区在线电影| 99国产精品99久久久久久粉嫩| 亚洲精品1234| 久久99精品国产麻豆婷婷| 国产日韩三级在线| 性感美女极品91精品| 69堂成人精品免费视频| 日韩av网站大全| 久久亚洲成人精品| 午夜精品视频在线| 久久久精品一区二区| 18性欧美xxxⅹ性满足| 久久精品视频在线| 操人视频在线观看欧美| 97免费视频在线| 久久久久久久网站| 欧美精品在线免费| 成人精品在线视频| 亚洲最大福利视频网站| 国产精品免费一区| 成人写真福利网| 色涩成人影视在线播放| 日韩欧美精品一区二区三区经典| 欧美寡妇偷汉性猛交| 欧美一区在线视频| 在线视频综合导航| 欧美xxxx老人做受| 精品网站在线看| 黑人巨大亚洲一区二区久 | 欧美一级淫片videoshd| 久久成人在线| 日韩黄色网络| 亚洲裸色大胆大尺寸艺术写真| av影片在线一区| 麻豆一区二区在线| 国产欧美一区二区三区沐欲| 神马久久资源| 精品久久亚洲| 久久国产生活片100| 在线视频一区二区三| 久久91亚洲人成电影网站 | 日韩中文影院| 性一交一乱一区二区洋洋av| 国产精品网曝门| 性色av一区二区三区在线观看| 中文一区一区三区免费| 日韩欧美精品在线| 日韩在线视频免费观看| 亚洲精品欧美精品| 成人av电影免费在线播放| 91色婷婷久久久久合中文| 日韩欧美国产高清91| 欧美极品美女电影一区| 色播五月综合| 日本高清中文字幕二区在线| 99久热在线精品视频观看| 欧美视频网站| 亚洲在线一区二区三区| www.亚洲成人| 日韩一区二区三区不卡视频| 亚洲二区av| 老司机精品视频在线| 午夜视频99|