通行证: 用户 密码
http://www.pconline.cn/
汽车网 | 游戏网 | 时尚女性
分站:北京 上海 广州 深圳 香港
广西 重庆 山东 江苏 辽宁 福建
首 页 | 今日报价 | 产业资讯 | 数码世界 | 硬件资讯 | 软件资讯 | 下 载 | 游 戏 |
论 坛 | 产 品 库 | 渠道商情 | 招聘培训 | 二    手 | 评 测 室 | 导 购 | 社 区 |
摄影
部落
手 机
数码相机
随身听
 DIY配件
笔记本
 台式机
摄像机
精品廊
-
您现在的位置:软件资讯 > 开发特区 > .net技术 > C#
  c#多线程教学(5):Case 学习多线程 出处:csdn
[ 2005-07-13 10:22:18 ] 作者:c-sharpcorner 责任编辑:moningfeng

  前4章内容回顾:c#多线程教学(4):线程池和异步编程 c#.net多线程编程教学(3):线程同步  c#.net多线程编程教学(2):Thread类 c#.net多线程编程教学(1):多任务和多线程

  在前面的多线程编程系列的文章中,我们了解了在.NET中多线程编程必须要掌握的基本知识,但是可能大家看了文章之后,感觉还是很模糊,对一个具体的编程可能还是觉得无从下手,究其原因可能是理论讲的过多,而没有太多的实际参考例子,造成收获不大。因此,在接下来的文章中,我将给出几个典型的多线程编程的实例,让大家有更清楚的认识。

Case 1 - No synchronization

  在我们的第一个例子中,有两类线程,两个是读线程,一个是写线程,两个线程是并行运行的并且需要访问同一个共享资源。读线程在写线程之前启动,用于设置共享变量的值。我使用Thread.Sleep来完成这些工作。摘录代码如下:

Thread t0 = new Thread(new ThreadStart(WriteThread));

Thread t1 = new Thread(new ThreadStart(ReadThread10));

Thread t2 = new Thread(new ThreadStart(ReadThread20));

t0.IsBackground=true;

t1.IsBackground=true;

t2.IsBackground=true;

t0.Start();

t1.Start();

t2.Start();



  正如所看到的那样,读线程启动之后立即启动两个写线程。下面的代码是两个读线程和写线程所执行的代码。

public void WriteThread()
{
Thread.Sleep(1000);
m_x=3;
}
public void ReadThread10()
{
int a = 10;
for(int y=0;y<5;y++)
{
string s = "ReadThread10";
s = s + " # multiplier= ";
s = s + Convert.ToString(a) + " # ";
s = s + a * m_x;
listBox1.Items.Add(s);
Thread.Sleep(1000);
}
}
public void ReadThread20()
{
int a = 20;
for(int y=0;y<5;y++)
{
string s = "ReadThread20";
s = s + " # multiplier= ";
s = s + Convert.ToString(a) + " # ";
s = s + a * m_x;
listBox1.Items.Add(s);
Thread.Sleep(1000);
}
}


  最后运行的结果如下:

  通过上面的运行结果,我们可以明显的看出运行结果并不是我们所期望的那样,开始的两个结果,读线程运行在写线程之前,这是我们极力要避免发生的事情。


Case 2 - Synchronization [One WriteThread - Many ReadThreads]

天敏贴纸相框设计大赛,千元大奖等你拿!

[1] [2] [3] [下一页]

正在加载评论,请稍候…

发给好友 我要报错 投稿给我们 加入收藏 返回顶部

本栏今日更新
相关文章
·重锤出击!GreenBrowser新版发布
·再挑IE!Firefox1.1 Alpha2即将发布
·追踪报道:IE最新漏洞仍在调查中
·新闻一周谈:别让流氓软件耍无赖!
·下一个杀手级应用:Podcasting你玩了么?
·表情[卡通]:美女打劫你喔
·BT时开网页慢,有无解决办法?
·链表的C语言实现之动态内存分配
·c#多线程教学(4):线程池和异步编程
·c#.net多线程编程教学(3):线程同步
·.NET多线程编程(1):多任务和多线程
·C# 最强大的功能--泛型简介
·用C#屏敝3721网络实名
·利用Visual C#实现Window管道技术
·C#版的冒泡排序算法
·C# 特性(Attribute)入门教程

完美时尚娱乐:2004年腾讯QQ评测大观
精彩无限:MSN Shell4使用指南
亲手制作鲜花情人贺卡送给她
挑战伏明霞?企鹅跳水游戏,看你能得多少分?

新闻搜索
高级搜索
Flash排行榜
·头文字D主题曲-漂移
·无情的你!六月的雨
·冒险游戏-小破孩奔月
·南京话说唱!喝馄饨
·斗实力斗技术!篮球斗牛
·《童话》励志鼓励篇
·好玩!超级连连看
·惊险刺激!忍者之死
·搞笑好玩!倒霉机器人
·冒险游戏-金碟神偷
热点专题
·向"流氓软件"大声说不!
·电脑艺术设计大师之路连载
·老歌歪唱Flash MV爆笑欣赏
·2005年XP SP2全新技巧放送
·视频轻松学Dreamweaver教程
·瞩目!QQ2005 Beta1火热发布
·全面了解FireFox浏览器
·情人节感动MM的十首MV
·QQ辅助软件使用指南
·含泪惜别!毕业十大必唱歌曲
·想不到?常用软件的另类用法
·搜索技巧:网罗天下的乐趣
IT培训十大热门文章
-