




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第淺談C#多線程下的調(diào)優(yōu)//并行編程
Console.WriteLine($"并行編程開始,主線程Id:{Thread.CurrentThread.ManagedThreadId}");
Console.WriteLine("【示例1】");
//示例1:
//一次性執(zhí)行1個或多個線程,效果類似:TaskWaitAll,只不過Parallel的主線程也參與了計算
Parallel.Invoke(
()={DoSomething("并行1-1");},
()={DoSomething("并行1-2");},
()={DoSomething("并行1-3");},
()={DoSomething("并行1-4");},
()={DoSomething("并行1-5");});
Console.WriteLine("*************并行結(jié)束************");
Console.ReadLine();
}
執(zhí)行Test1結(jié)果:
示例2:
publicstaticvoidTest2()
//并行編程
Console.WriteLine($"并行編程開始,主線程Id:{Thread.CurrentThread.ManagedThreadId}");
Console.WriteLine("【示例2】");
//示例2:
//定義要執(zhí)行的線程數(shù)量
Parallel.For(0,5,t=
inta=t;
DoSomething($"并行2-{a}");
Console.WriteLine("*************并行結(jié)束************");
Console.ReadLine();
}
結(jié)果:
示例3:
publicstaticvoidTest3()
//并行編程
Console.WriteLine($"并行編程開始,主線程Id:{Thread.CurrentThread.ManagedThreadId}");
Console.WriteLine("【示例3】");
ParallelOptionsoptions=newParallelOptions()
MaxDegreeOfParallelism=3//執(zhí)行線程的最大并發(fā)數(shù)量,執(zhí)行完成一個,就接著開啟一個
//遍歷集合,根據(jù)集合數(shù)量執(zhí)行線程數(shù)量
Parallel.ForEach(newListstring{"a","b","c","d","e","f","g"},options,(t,status)=
//status.Break();//這一次結(jié)束。
//status.Stop();//整個Parallel結(jié)束掉,Break和Stop不可以共存
DoSomething($"并行4-{t}");
}
結(jié)果:分成3次并行
五、異步IO
1.異步IO于同步IO比較
異步IO在數(shù)據(jù)準(zhǔn)備階段不會阻塞主線程,而同步IO則會阻塞主線程。
2.異步讀寫文件
這里使用FileStream類,它帶有一個參數(shù)useAsync,可以避免在許多情況下阻塞線程池的線程??梢酝ㄟ^useAsync=true來進(jìn)行啟用或在構(gòu)造函數(shù)中進(jìn)行參數(shù)調(diào)用。
但是我們不能對StreamReader和StreamWriter中的參數(shù)進(jìn)行設(shè)置。但是,如果你想使用該參數(shù)useAsync,則需要自己新建一個FileStream對象。
請注意,異步調(diào)用是在UI中的,即使線程池線程阻塞,在await期間,用戶界面線程也不會被阻塞。
異步寫入文本
///summary
///異步寫入文件
////summary
///returns/returns
publicasyncTaskWriteTextAsync()
varpath="temp.txt";//文件名
varcontent=Guid.NewGuid().ToString();//寫入內(nèi)容
using(varfs=newFileStream(path,FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.None,bufferSize:4096,useAsync:true))
varbuffer=Encoding.UTF8.GetBytes(content);
awaitfs.WriteAsync(buffer,0,buffer.Length);
}
執(zhí)行完查看根目錄文件結(jié)果:
異步讀取文件
///summary
///異步讀取文本
////summary
///returns/returns
publicstaticasyncTaskReadTextAsync()
varfileName="temp.txt";//文件名
using(varfs=newFileStream(fileName,
FileMode.OpenOrCreate,FileAccess.Read,FileShare.None,bufferSize:4096,useAsync:true))
varsb=newStringBuilder();
varbuffer=newbyte[4096];
varreadLength=0;
while((readLength=awaitfs.ReadAsync(buffer,0,buffer.Length))!=0)
vartext=Encoding.UTF8.GetString(buffer,0,readLength);
sb.Append(text);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初級社工影響力考察題目及答案
- 中級社會工作者考試中的案例討論及試題及答案
- 煤礦知識試題及答案
- 多媒體設(shè)計與文化創(chuàng)意產(chǎn)業(yè)的關(guān)系探討試題及答案
- 湖南省初二試題及答案
- 大師總結(jié)2025年系統(tǒng)分析師考試試題及答案
- 系統(tǒng)掌握2025年網(wǎng)絡(luò)規(guī)劃設(shè)計師考試試題及答案
- 2025年計算機(jī)考試高頻試題與答案
- 2025年軟件評測師考試創(chuàng)新試題及答案理解
- MS Office跨平臺使用技巧與2025年考試試題及答案
- GB/T 23453-2025天然石灰石建筑板材
- 2025年廣東省廣州市越秀區(qū)中考物理一模試卷(含答案)
- 砌磚理論考試題及答案
- 2025屆各地名校4月上旬高三語文聯(lián)考作文題目及范文12篇匯編
- 【9語一?!?025年4月天津市和平區(qū)九年級中考一模語文試卷(含答案)
- 青少年網(wǎng)絡(luò)安全知識講座
- 2025年高考物理大題突破+限時集訓(xùn)(含解析)
- 人體解剖學(xué)題庫(含答案)
- 法人授權(quán)委托書深圳標(biāo)準(zhǔn)版
- srs13a中文說明書編程手冊
- 江西省部分高中學(xué)校2024-2025學(xué)年高一下學(xué)期聯(lián)考生物試卷(原卷版+解析版)
評論
0/150
提交評論