下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
.NET中多線程間資源共享與訪問本文詳細地描述一個定制的.NET類ThreadLockHelper(該類能在多線程環(huán)境下有效地共享資源),同時提供了.NET下多線程中資源共享及同步技術的概述。其helper類,將會幫助并簡化.NET框架下高級程序員們對多線程的使用...§§翻譯vinodramakrishnan著Managingsharedresourceaccessin.NETmulti-threading簡介本文詳細地描述一個定制的.NET類ThreadLockHelpe(該類能在多線程環(huán)境下有效地共享資源),同時提供了.NET下多線程中資源共享及同步技術的概述。文中給出的helper類,將會幫助并簡化.NET框架下,高級程序員們對多線程的使用。本文也講述如何在多線程之間同步資源的訪問。本文將引導你:使用.NET線程threading模型在訪問共享資源時,設計一個更好的加鎖機制。設計并實現(xiàn)復雜多線程的解決方案。我們假設你比較屬性.NET開發(fā)組件,和基本的線程機制。內(nèi)容概述在多線程中訪問共享資源。設計和實現(xiàn)ThreadLockHelper類。使用ThreadLockHelper類的示例程序??偨Y(jié)在多線程中訪問共享資源概述使用多線程技術,可以使一個.NET程序同時執(zhí)行多個任務。多線程允許你同時開啟多個線程,分別執(zhí)行不同任務;還能夠提高程序的性能和響應時間。因為多線程能夠同時訪問資源,所以最好在多線程間進行同步。當一個程序運行在多線程環(huán)境下的時候,它需要確保當一個線程掛起的時候,不應該還占用著對象(資源)。線程安全的基本含義是:當多線程同時訪問時,對象的成員總是管理著一個有效狀態(tài),確保它們不會沖突。.NET提供了不同的同步機制,以管理多線程的線程安全。locklock是一個關鍵字,它通過給一個對象加鎖,執(zhí)行語句,解鎖,把一段語句標志為臨界區(qū)。示例代碼lock(obj){//codetobelockedwillgohere}MonitorMonitor:Monitor類是用來同步實例中的方法或靜態(tài)的方法。這個方法要依賴于一個object,也就是說,它不是在如int或string之類的值上加鎖。該臨界區(qū)通過調(diào)用Monitor.Enter()建立,并通過Monitor.Exit()釋放。示例代碼:try{ Mon~j);} /…b…心1奕here:lnally}M~obj);Mutex當位于進程之內(nèi)或之間的線程需要訪問操作系統(tǒng)的資源的時候,需要一個控制機制來限制資源訪問的沖突。System.Threading.Mutex是一個繼承于WaitHandle的類,它必須實現(xiàn)一個信號量機制表明排他地占用或釋放資源。同一時間,只能有一個線程占用Mutex。在訪問資源之前,每個線程都通過發(fā)信號,以獲得Mutex的控制權。此后,線程還必須等待資源的控制權。當線程完成操作時,通過ReleaseMutex()發(fā)出完成信號(lock和Monitor對于unmanaged資源是不起作用的)。示例代碼:MutexobjMutex=newMutex(false,"ThreadLock");objMutex.WaitOne();//codetobelockedwillgohereobjMutex.ReleaseMutex();ThreadLockHelper 類的設計和實現(xiàn)ThreadLockHelper類ThreadLockHelperclassisasingletonimplementationandonlyoneinstancewillbetakingcareoflockingthreadsforaprocesstobeexecuted.ThreadLockHelper類需要的命名空間usingSystem;usingSystem.Threading;///<summary>///一個靜態(tài)的用于對managed/unmanaged資源進行加鎖的類///</summary>publicclassThreadLockHelper(staticThreadLockHelpermInstance=null;MutexmMutex=null;privateThreadLockHelper()(}publicstaticThreadLockHelperGetInstance()(if(mInstance==null)(mInstance=newThreadLockHelper();mInstance.mMutex=newMutex(false,"ThreadLock");}return(mInstance);}publicboolCreateLock()"…==頑1-mMutex=newMutex(false,"ThreadLock");—;g……g,…_);調(diào)用示例程序在進程執(zhí)行前創(chuàng)建一個ThreadLockHelper鎖,在執(zhí)行后,釋放。publicclassActivity(publicvoidInvokeTask()(TaskobjTask=newTask();ThreadLockHelper.GetInstance().CreateLock();objTask.DoTask();ThreadLockHelper.GetInstance().ReleaseLock();}}上面的程序中,objTask.DoTask()操作用于訪問一個共享的資源(例如:調(diào)用一個web服務完成某些功能)如果你在不同的線程中調(diào)用了上面的InvokeTask()方法,示例如下:ActivityobjActivity=null;ThreadthdInvokeTask;for(inti=1;i<100;i++)(objActivity=newActivity();thdInvokeTask=newThread(newThreadStart(objClsThread.InvokeTask));}在上面的場景中,如果你不采用加鎖機制,應用程序就會因線程退出異常(threadabortexception)失敗。你可以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024美發(fā)店員工福利待遇與績效考核合同3篇
- 2025年度航空運輸合同電子化平臺建設與信息安全保障4篇
- 個人借款合同范本(2024年度)
- 二零二五年度鋼結(jié)構(gòu)工程承包勞務合同樣本4篇
- 2025年度窗簾圖案設計版權轉(zhuǎn)讓合同4篇
- 二零二五年度木工行業(yè)國際交流與合作合同3篇
- 二手老舊房買賣合同中2024年度的房屋交易信息化服務協(xié)議3篇帶眉腳
- 二零二五年度沖擊鉆施工設備進出口代理合同3篇
- 二零二五年度汽車租賃公司車輛融資擔保合同4篇
- 二零二四年度展覽會專用保安服務與現(xiàn)場觀眾引導合同3篇
- 人教版物理八年級下冊 專項訓練卷 (一)力、運動和力(含答案)
- 山東省房屋市政工程安全監(jiān)督機構(gòu)人員業(yè)務能力考試題庫-中(多選題)
- 重慶市2023-2024學年七年級上學期期末考試數(shù)學試題(含答案)
- 2024年中考語文滿分作文6篇(含題目)
- 北師大版 2024-2025學年四年級數(shù)學上冊典型例題系列第三單元:行程問題“拓展型”專項練習(原卷版+解析)
- 2023年譯林版英語五年級下冊Units-1-2單元測試卷-含答案
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運行管理規(guī)程
- 種子輪投資協(xié)議
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 浙教版七年級數(shù)學下冊全冊課件
評論
0/150
提交評論