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

  下面我将使用ManualResetEvent来解决上面遇到的问题来达到线成的同步,唯一不同的是我们在启动读线程和写线程之前使用安全的方法。

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

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

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

t0.IsBackground=true;

t1.IsBackground=true;

t2.IsBackground=true;

t0.Start();

t1.Start();

t2.Start();



  添加一个ManualResetEvent:

m_mre = new ManualResetEvent(false);


  看看SafeWriteThread的代码:

public void SafeWriteThread()
{
m_mre.Reset();
WriteThread();
m_mre.Set();
}



  Reset设置ManualResetEvent的状态为non-signaled,这意味着事件没有发生。接着我们来调用WriteThread方法,实际上可以跳过Reset这一步,因为我们在ManualResetEvent的构造函数设置其状态为non-signaled。一旦WriteThread线程返回,调用Set方法设置ManualResetEvent的状态为signaled。

  下面让我们来看看另外两个SafeReadThread方法:

public void SafeReadThread10()
{
m_mre.WaitOne();
ReadThread10();
}
public void SafeReadThread20()
{
m_mre.WaitOne();
ReadThread20();
}



  WaitOne方法将阻塞当前的线程直到ManualResetEvent的状态被设置为signaled。在这里,我们程序中的两个读线程都将阻塞至SafeWriteThread完成任务后调用Set方法。这样我们就确保了两个读线程在写线程完成对共享资源的访问之后才执行。


Case 3 - Synchronization [Many WriteThreads - 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培训十大热门文章
-