C#中的并行与多线程编程
来源:互联网 发布:同性约会软件 编辑:程序博客网 时间:2024/05/16 13:41
最近研究Python有大牛越来越多了。本想尝试一下的,不过语法结构很多不一样。也没有过多的精力来重新研究一门语言。
还是把手上的C#精通一点更好。C#很简单,适合我们这种小菜级别的玩。
在处理很多数据的时候,加入C#新特性的并行和任务来实现多线程,超级有趣。
先说2个小代码。
一个是Task任务,相当于旧版的Thread多线程。但是在.net 4.0以后都统称为Task任务了。其实就是多线程。
一、Task多线程,线程结束后执行特定的代码。
Task task = new Task(() =>{ //这里执行工作的主体,但是不能操作界面,会造成线程崩溃。//合理的方法是在前面就把界面元素交给特定的值,比如//string content=txtContent.Text;然后线程内部就可以使用这个content了。});task.Start();//开始这个任务task.ContinueWith((t) =>{//任务完成后执行这里的代码,比如一个提示,或者数据显示到界面之类的。});
Task里面可以去循环执行持 久任务,不会卡死界面。
这里只有一个线程,真正多个分开的线程可以用List<Task>去执行。线程取消使用CancellationTokenSource 也非常简单。
有研究的朋友自己先行尝试一下吧。
二、Parallel并行编程
个人感觉 这块超级爽。原来fore和Foreach执行代码要花 一天的时间,这个一般只需要1个小时不到吧。
尽可能的利用了电脑的硬件资源进行并行开发。具体什么是并行编程,建议自己百度一下。也很好理解,就是每个程序分开在不同的地方去执行。个人感觉和多线程一样。
举个例子,我的数组 List<string>里面有10000万行数据。我要提取指定的包函特定关键词的数据出来。用for和foreach会折腾死人的。
我们用并行来试试吧。
ConcurrentQueue<string> data = new ConcurrentQueue<string>();List<string> data = new List<string>();Parallel.ForEach(Data, (oneline) =>{ if (oneline.indexof(" 关键词")>-1) data.Add(oneline); });Console.WriteLine("执行完成ForEach.");
ConcurrentQueue是线程安全的队列,防止同时多个线程添加数据的时候出现死锁或者其它异常。
parallel.foreah就是遍历每一行,每一行得到的结果是online ,我们再判断每个oneline是不是包括我们要判断的
关键词。包括就存到结果里面去,最后显示出来就O了。
并行会造成界面假死,如果外面还要包装一个Task。在Task的工作代码段放下这段并行代码。
享受下超级无敌极速的体验吧。
PS:访问网络的时候,加上异步获取,Task多线程和Parallel并行。会让你体验到无以伦比的极速爽快。
文章写得简单,新手阅读吧。欢迎吐槽指正。。
成都SEO小五嚎2句: 本文是(成都SEO小五)辛苦弄出来的,转载成都SEO小五原创的请保留链接: C#中的并行与多线程编程,3Q
- C#中的并行与多线程编程
- C#中的并行与多线程编程
- C#中的并行与多线程编程
- 5天玩转C#并行和多线程编程
- C#中的多线程编程
- C#中的多线程编程
- C#中的多线程编程
- C#中的多线程编程
- C#中的多线程编程
- C#中的多线程编程
- C#中的多线程编程
- C#中的多线程编程
- C#中的多线程编程
- C#中的多线程编程
- C#中的多线程编程
- C#中的多线程编程
- Visual C#中的多线程编程原理与实现例子
- C#中的多线程编程原理与实现例子
- 自定义createElement——根据html字符串创建元素
- 函数内使用指针
- 采用aidl访问远程服务里面的方法
- Ubuntu下无法启动Eclipse的原因
- Qt下的跨目录多工程编译
- C#中的并行与多线程编程
- Linux0.12内核读书笔记
- jackson json 简单入门
- Html5游戏开发攻略(API篇)
- Ubuntu12.04搭建Hadoop环境
- qmake使用实践:包含动态库的Qt4工程
- 我的第一课:jquery实现点击消失
- 在android中使用SOAP与webservice进行数据交互
- DataTable转换为List<Model>的通用类(绑定Repeater智能提示)