




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第浅谈C#多线程下的调优//并行编程
Console.WriteLine($"并行编程开始,主线程Id:{Thread.CurrentThread.ManagedThreadId}");
Console.WriteLine("【示例1】");
//示例1:
//一次性执行1个或多个线程,效果类似:TaskWaitAll,只不过Parallel的主线程也参与了计算
Parallel.Invoke(
()={DoSomething("并行1-1");},
()={DoSomething("并行1-2");},
()={DoSomething("并行1-3");},
()={DoSomething("并行1-4");},
()={DoSomething("并行1-5");});
Console.WriteLine("*************并行结束************");
Console.ReadLine();
}
执行Test1结果:
示例2:
publicstaticvoidTest2()
//并行编程
Console.WriteLine($"并行编程开始,主线程Id:{Thread.CurrentThread.ManagedThreadId}");
Console.WriteLine("【示例2】");
//示例2:
//定义要执行的线程数量
Parallel.For(0,5,t=
inta=t;
DoSomething($"并行2-{a}");
Console.WriteLine("*************并行结束************");
Console.ReadLine();
}
结果:
示例3:
publicstaticvoidTest3()
//并行编程
Console.WriteLine($"并行编程开始,主线程Id:{Thread.CurrentThread.ManagedThreadId}");
Console.WriteLine("【示例3】");
ParallelOptionsoptions=newParallelOptions()
MaxDegreeOfParallelism=3//执行线程的最大并发数量,执行完成一个,就接着开启一个
//遍历集合,根据集合数量执行线程数量
Parallel.ForEach(newListstring{"a","b","c","d","e","f","g"},options,(t,status)=
//status.Break();//这一次结束。
//status.Stop();//整个Parallel结束掉,Break和Stop不可以共存
DoSomething($"并行4-{t}");
}
结果:分成3次并行
五、异步IO
1.异步IO于同步IO比较
异步IO在数据准备阶段不会阻塞主线程,而同步IO则会阻塞主线程。
2.异步读写文件
这里使用FileStream类,它带有一个参数useAsync,可以避免在许多情况下阻塞线程池的线程。可以通过useAsync=true来进行启用或在构造函数中进行参数调用。
但是我们不能对StreamReader和StreamWriter中的参数进行设置。但是,如果你想使用该参数useAsync,则需要自己新建一个FileStream对象。
请注意,异步调用是在UI中的,即使线程池线程阻塞,在await期间,用户界面线程也不会被阻塞。
异步写入文本
///summary
///异步写入文件
////summary
///returns/returns
publicasyncTaskWriteTextAsync()
varpath="temp.txt";//文件名
varcontent=Guid.NewGuid().ToString();//写入内容
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);
}
执行完查看根目录文件结果:
异步读取文件
///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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 传染病防控的试题及答案全解
- 自考行政管理2025年试题及答案分享
- 行政管理环境适应试题及答案
- 不同类型药物的配伍与禁忌试题及答案
- 行政法学与社会变革的互动分析试题及答案
- 行政管理学科试题及答案分享
- 2025年通识教育卫生资格考试试题及答案
- 经济法概论考试简明框架试题及答案
- 双向理解2025年护士试题及答案
- 深入看待自考行政管理的试题与答案
- 测井试题及答案完整版
- 外贸英语词汇
- 中级出版专业技术人员职业资格2025年笔试题库附答案
- 江苏南通2025年公开招聘农村(村务)工作者笔试题带答案分析
- 专利代缴年费合同协议
- 高级激光应用试题及答案
- 2024中国国新基金管理有限公司相关岗位招聘7人笔试参考题库附带答案详解
- GB 28050-2025食品安全国家标准预包装食品营养标签通则
- 登高车安全培训
- 人教版七年级地理下册 第九章第三节 撒哈拉以南的非洲(上课、学习课件)
- 如何提升护理队伍专业素质
评论
0/150
提交评论