您的位置:首页 > 编程语言 > C#

C#中的多线程--持续更新系列

2012-04-12 09:52 330 查看
 今年第一次旅行结束,虽然是第二次进去藏区,依旧有高原反应,嚓....不过整个旅途感受到前所未有的放松.更有精力面对接下来的工作和学习.进入今天的主题---C#中的多线程

1、感受多线程

因为文章追求是简单易懂,如果您和我一样,是C#初学者,那么在这一段中,请跟着例子,写一次,每个例子都有分析,并且这里的例子是会把多线程涉及的很多问题先引入出来,在后面的阶段,再深入分析~

C#是支持多线程滴(貌似是废话.)~一个线程有它独立的执行路径,能够与其他的线程“同时”运行,一个C#程式起始于一个单线程,这个线程是被CLR和操作系统自动创建滴。~啰嗦了这么多了,还是用一段简单的代码加以说明

第一个多线程程式
程序运行截图

多线程调用同一个方法,方法中局部变量执行问题
多线程共享实例
多线程中的静态字段
程序运行结果:

修改后的Go方法
在多次执行这个程式,输出done的次数在1和2次之间没规律的切换~

线程安全
我们再试着多次运行程序,会发现只会输出一个done,当两个线程在争夺一个锁的时候(例子中的是locker),一个线程会处于等待或者说是阻止状态知道那个锁变成可用,确保在同一时刻只有一个线程进入了工作区,所以保证只输出了一次done.
在完成上面几个简单的例子之后,我们应该思考,在何时使用多线程~

何时使用多线程

其实这个话题,我想是仁者见仁智者见智了,但核心的思想都是一致的,多线程程序一般被用来在后台处于耗时的任务,主线程保持运行,并且工作线程在后台默默无闻的工作,对于Winform程序来说,如果主线程(UI线程)执行一段耗时操作的代码,键盘和鼠标的操作会变得很迟钝,时间稍微长点,就整个程序就失去了响应。

04 2012 档案

C#中的多线程--持续更新系列

摘要: 今年第一次旅行结束,虽然是第二次进去藏区,依旧有高原反应,嚓....不过整个旅途感受到前所未有的放松.更有精力面对接下来的工作和学习.进入今天的主题---C#中的多线程1、感受多线程因为文章追求是简单易懂,如果您和我一样,是C#初学者,那么在这一段中,请跟着例子,写一次,每个例子都有分析,并且这里的例子是会把多线程涉及的很多问题先引入出来,在后面的阶段,再深入分析~C#是支持多线程滴(貌似是废话.)~一个线程有它独立的执行路径,能够与其他的线程“同时”运行,一个C#程式起始于一个单线程,这个线程是被CLR和操作系统自动创建滴。~啰嗦了这么多了,还是用一段简单的代码加以说明第一个多线程程式 ..阅读全文

posted @ 2012-04-12 07:13 wolfram 阅读(214) | 评论 (1) 编辑

.Net下Attribute的特性简单入门

摘要: 已经工作了2个多月,请了几天假,凑足10天,给自己安排一次旅行,虽然是下午的航班,但凌晨就睡不着,跑起来收拾好东西后,毫无睡意.so..有了这篇博文我相信不少初学者,和我一样,经常看到以下这样的代码对于图示中红线标注的东西,通过查阅资料,知道叫Attribute(特性).于是Google、百度一番,似乎说这个话题的博文不少,估计看完了也是云里雾里的。ok...鄙人就冒昧,用最简单的办法来尝试学习下Attribute.1、Attribute到底是什么?先不要去看那些一大段的文字说明,Attribute翻译过来:(推荐使用百度的翻译.不错...下面的翻译结果引用自百度词典)attribute1..阅读全文

posted @ 2012-04-01 05:59 wolfram 阅读(1902) | 评论 (21) 编辑
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: