



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第C#多線程處理多個隊列數據的方法多線程(multithreading),是指從軟件或者硬件上實現多個線程并發執行的技術。具有多線程能力的計算機因有硬件支持而能夠在同一時間執行多于一個線程,進而提升整體處理性能。具有這種能力的系統包括對稱多處理機、多核心處理器以及芯片級多處理或同時多線程處理器。在一個程序中,這些獨立運行的程序片段叫作“線程”(Thread),利用它編程的概念就叫作“多線程處理”。
隊列(Queue)代表了一個先進先出的對象集合。當您需要對各項進行先進先出的訪問時,則使用隊列。當您在列表中添加一項,稱為入隊,當您從列表中移除一項時,稱為出隊。
比如平常我們在處理定時任務的時候,假設就一臺機器,我們不可能單線程一條一條數據的去跑,這時候就需要提高機器資源的利用率。
下面我們來介紹下,如何實現多線程+隊列以提高并發處理能力。
代碼實現
1、定義線程數threadNum和隊列queues
///summary
///線程總數
////summary
privateintthreadNum=4;
///summary
///總數
////summary
privateinttotalCount=0;
///summary
///已處理
////summary
privateintindex=0;
///summary
///隊列
////summary
privateConcurrentQueueAssetRepaymentqueues=newConcurrentQueueAssetRepayment
2、定義線程列表,往線程添加數據
publicvoidSubDeTransaction()
varlist=newListAssetRepayment
for(inti=0;i1000;i++)
list.Add(newAssetRepayment(){Title=i.ToString()+"---"+Guid.NewGuid().ToString()});
if(list==null||list.Count()==0)
Console.WriteLine("沒有可執行的數據");
return;
totalCount=list.Count;
Console.WriteLine("可執行的數據:"+list.Count()+"條");
foreach(variteminlist)
queues.Enqueue(item);
ListTasktasks=newListTask
for(inti=0;ithreadNum;i++)
vartask=Task.Run(()=
Process();
});
tasks.Add(task);
vartaskList=Task.Factory.ContinueWhenAll(tasks.ToArray(),(ts)=
});
taskList.Wait();
3、對線程數進行限制for(inti=0;ithreadNum;i++)
vartaskList=Task.Factory.ContinueWhenAll(tasks.ToArray(),(ts)=
});
taskList.Wait();
4、從隊列取出數據進行業務處理
privatevoidProcess()
while(true)
varcurrentIndex=Interlocked.Increment(refindex);
AssetRepaymentrepayId=null;
varisExit=queues.TryDequeue(outrepayId);
if(!isExit)
break;
try
Console.WriteLine(repayId.Title);
Console.WriteLine(string.Format("共{0}條當前第{1}條",totalCount,currentIndex));
ca
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供水管道換新改造項目可行性研究報告
- 幼兒故事文字排版設計
- 女性服裝設計
- 山西省朔州市懷仁市第九中學高中部2023-2024學年高一上學期11月期中物理含解析
- 心理常識思維導圖設計
- 大理護理職業學院《基礎筆譯》2023-2024學年第二學期期末試卷
- 吉林建筑大學《俄語口譯》2023-2024學年第二學期期末試卷
- 湖南中醫藥大學湘杏學院《并行計算與分布式系統》2023-2024學年第二學期期末試卷
- 杭州職業技術學院《資訊科技》2023-2024學年第二學期期末試卷
- 寧波城市職業技術學院《護理禮儀與人際溝通(妝容課)》2023-2024學年第二學期期末試卷
- 水文學試題題庫及答案
- 2025天津東疆綜合保稅區管理委員會招聘10人筆試參考題庫附帶答案詳解
- 法院書記員招聘2023年筆試考試必做題有答案
- 2024年北京大興國際機場臨空經濟區幼兒園招聘教師考試真題
- (三模)烏魯木齊地區2025年高三年級第三次質量監測理科綜合試卷(含答案)
- 《刑法學課件 》課件各章節內容-第十章 共同犯罪
- 2025神農科技集團有限公司第一批校園招聘17人(山西)筆試參考題庫附帶答案詳解
- 【北京市人社局】2025年北京市人力資源市場薪酬數據報告(一季度)
- 安裝噴泉設備采購合同協議
- 2025年鐵路車輛鉗工(技師)職業技能鑒定考試題庫(含答案)
- 新生兒重度窒息討論制度
評論
0/150
提交評論