Parallel类学习
来源:互联网 发布:如何手机淘宝购物 编辑:程序博客网 时间:2024/06/06 07:40
c#Parallel类学习
Parallel类也属于多线程处理的一个类。
- Parallel类其实就是在Task基础上封装的,多个任务并行计算,而且主线程也在计算,其实就是Task + WaitAll的方式。代码如下:
Parallel.For(0, 5, t => { Console.WriteLine("{0} For当前线程id={1}", t, Thread.CurrentThread.ManagedThreadId); Thread.Sleep(10); new Action(() => { textBox1.AppendText(string.Format("{0} For当前线程id={1}", t, Thread.CurrentThread.ManagedThreadId) + "\r\n");}).Invoke(); }); textBox1.AppendText("上面执行完之后才会执行这行代码!!!" + "\r\n");
Parallel启动了5个线程,等到5个线程执行完之后再往下执行,相当无waitall,执行结果:
0 For当前线程id=9
2 For当前线程id=11
3 For当前线程id=12
1 For当前线程id=10
4 For当前线程id=13
上面执行完之后才会执行这行代码!!!
- Parallel foreach方法,其实和for方法大同小异
Parallel.ForEach(new int[] { 1, 2, 3, 4, 5 }, t => { Thread.Sleep(10); new Action(() => { textBox1.AppendText(string.Format("{0} For当前线程id={1} t={2}", t, Thread.CurrentThread.ManagedThreadId,t) + "\r\n"); }).Invoke(); });
执行结果:
1 For当前线程id=9 t=1
5 For当前线程id=13 t=5
2 For当前线程id=11 t=2
4 For当前线程id=10 t=4
3 For当前线程id=12 t=3
ParallelOptions
ParallelOptions options = new ParallelOptions() {MaxDegreeOfParallelism = 5};
MaxDegreeOfParallelism属性用来设置Parallel可启动多少个线程数。
ParallelOptions options = new ParallelOptions() { MaxDegreeOfParallelism = 5 }; Parallel.For(0, 100, options, t => { Console.WriteLine("{0} For当前线程id={1}", t, Thread.CurrentThread.ManagedThreadId); Thread.Sleep(3000); });
上面代码中准备启动100个线程但是只会启动5个,因为MaxDegreeOfParallelism设置的是5.
-Parallel类的中的线程的取消和暂停
Parallel.For(0, 100, options, (t, state) => { Console.WriteLine("{0} For当前线程id={1}", t, Thread.CurrentThread.ManagedThreadId); state.Break();//循环结束 return;//带上return才有效 Thread.Sleep(3000); });
这种就是在执行到 state.Break()的时候会不会再实行循环后面的代码,也就是说会退出循环。
Parallel.For(0, 100, options, (t, state) => { Console.WriteLine("{0} For当前线程id={1}", t, Thread.CurrentThread.ManagedThreadId); state.Stop(); return;//带上return才有效 Thread.Sleep(3000); });
这种就是在执行到 state.Stop()的时候直接结束掉Parallel,不会再执行。 Break只是退出当前循环,但是已经执行了的循环会继续往下执行。
1 0
- Parallel类学习
- Parallel类
- C# Parallel.For和Parallel.ForEach学习
- [Haskell学习]Parallel list comprehension
- Task Parallel Library ( TPL)学习
- parallel studio工具学习总结
- R的Parallel包学习
- Parallel
- C# Parallel类的作用
- [深入学习C#]C#实现多线程的方式:使用Parallel类
- Lesson1: Udacity parallel programming 学习笔记
- 机器学习并行化(parallel machine learning)
- C# 中Parallel类的使用
- Udacity cs344-Introduction to Parallel Programming学习笔记-第一单元
- Udacity cs344-Introduction to Parallel Programming学习笔记-第二单元
- Udacity cs344-Introduction to Parallel Programming学习笔记-第三单元
- Udacity cs344-Introduction to Parallel Programming学习笔记-第四单元
- Udacity cs344-Introduction to Parallel Programming学习笔记-第四单元
- Struts2-The Struts dispatcher cannot be found
- 自定义GridView显示行分割线
- x264使用示例
- 自增和自减运算
- 02搭建一个简单的spring项目
- Parallel类学习
- Open CV学习记录(十七)—从图上显示某点的坐标
- 集合实现同步 : Collections.synchronizedXXX
- androud 常用组件
- 敏捷开发系列学习总结(6)——你用什么工具管理项目
- HTML文件中表格(Table)标记的常用属性
- Android APK的数字签名的作用和意义
- banana pi BPI-Webduino Smart 物联网无线控制模块
- 加快Android studio gradle 速度