- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
应用软件开发第章多线程第章多线程王德俊上海交通大学继续教育学院第章多线程线程及其实现方法线程的同步控制线程的同步控制为什么要同步控制使用类使用类为什么要同步控制线程之间由于共享资源而产生相互之间需要互相等待互通消息才能正确地完成任务此时就需要相应的同步控制机制来支持线程的合作关系例存在同步访问问题的多线程程序如下创建控制台应用程序简单地模拟银行用户进行转帐和取款的程序转帐转帐前帐户还剩余的金额转帐金额元输入转帐金额转帐金额超出了帐户所剩的金额转帐失败转帐后帐户还剩余的金额线程的同步控制为什么要同
* 应用软件开发(C#) 第9章 多线程 第9章 多线程 王德俊 上海交通大学继续教育学院 第9章 多线程 9.1 线程及其实现方法 9.2 线程的同步控制 9.2 线程的同步控制 9.2.1 为什么要同步控制 9.2.2 使用ManualResetEvent类 9.2.3 使用AutoResetEvent类 9.2.1 为什么要同步控制 线程之间由于共享资源而产生相互之间需要互相等待、互通消息才能正确地完成任务,此时就需要相应的同步控制机制来支持线程的合作关系。 【例9.1】 存在同步访问问题的多线程程序。如下:创建控制台应用程序BankTransfering,简单地模拟银行用户进行转帐和取款的程序: class Bank { private double account1 = 2500; private double account2 = 1000; public void transfering() //转帐 { Console.WriteLine(转帐前帐户account1还剩余的金额: + account1.ToString()); Console.Write(转帐金额(元):); double sum = double.Parse(Console.ReadLine()); //输入转帐金额 if (sum account1) { Console.WriteLine(转帐金额超出了帐户account1所剩的金额,+转帐失败!); return; } account1 = account1 - sum; account2 = account2 + sum; Console.WriteLine(转帐后帐户account1还剩余的金额: + account1.ToString()); } 9.2 线程的同步控制 9.2.1 为什么要同步控制 public void fetching() //取款 { Thread.Sleep(100); account1 = account1 - 2000; //取款2000元 } } static void Main(string[] args) { Bank a = new Bank(); Thread user1 = new Thread(new ThreadStart(a.transfering)); Thread user2 = new Thread(new ThreadStart(a.fetching)); user1.Start(); user2.Start(); Console.ReadKey(); } 9.2 线程的同步控制 9.2.1 为什么要同步控制 9.2 线程的同步控制 9.2.1 为什么要同步控制 程序运行结果如图: 分析:user1查询帐户account1时,显示了还剩2500元的信息,但在执行从account1向account2转2000元时,却出现了操作失败的提示。 其原因:恰好在user1等待接收从键盘输入的转帐金额时,user2从帐户account1上提走了2000元。 结论:需要同步控制 ManualResetEvent类的作用是:通知一个或多个正在等待的线程已发生事件。 ManualResetEvent类对象有两种状态:有信号状态和无信号状态。状态常通过两种方法设置: 一种是使用构造函数, 例如: ManualResetEvent mre = new ManualResetEvent( false); //初始化mre为无信号状态 ManualResetEvent mre = new ManualResetEvent(true); //初始化mre为有信号状态 另一种是使用对象方法, 例如: mre.Reset(); //使mre处于无信号状态
您可能关注的文档
- EADSTETRA数位中继式无线电通信系统.PPT
- EAST纵场电源系统进展情况汇报.PPT
- EBM与药物安全性-国家药品不良反应监测中心.PPT
- EBSCO数据库讲座-池州学院图书馆.PPT
- e-business-教学资源-上海财经大学.PPT
- ECFA临时原产地规则-何谓原产地证明.PPT
- ECMO辅助抢救急性心肌梗死合并心源性休克一例康慧元.PPT
- EffectiveFoodSafetyControlSystem高效的食品安全控制体系.PPT
- EHLD电子商务物流配送系统简介-紫川软件.PPT
- E-Learn平台教育训练-世新远距教学-世新大学.PPT
- 浙江省温州市浙南名校联盟2025-2026学年高一上学期期中联考数学试题含解析.docx
- 26高考数学提分秘诀重难点34圆锥曲线中的定点、定值、定直线问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点35概率与统计的综合问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点31圆锥曲线中的切线与切点弦问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点30圆锥曲线中的弦长问题与长度和、差、商、积问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点29巧解圆锥曲线的离心率问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点28直线与圆的综合(举一反三专项训练)(全国通用)(含解析).docx
- 寡核苷酸药物重复给药毒性研究技术指南.docx
- 重组溶瘤腺病毒生产质量管理标准.docx
- 26高考数学提分秘诀重难点27直线与圆中常考的最值与范围问题(举一反三专项训练)(全国通用)(含解析).docx
最近下载
- 地震逃生演练方案与实施细节.docx VIP
- brc食品质量与安全管理培训课件.pptx
- 选用教材评价表(模板).pdf VIP
- 大学英语四级考试高频词汇1500(打印版).pdf VIP
- 神经外科患者肺部管理.pptx VIP
- 淮安市实验小学四年级上学期期中数学试卷(含答案解析).doc VIP
- 2025年驾驶证三力测试题库及答案完整版.doc VIP
- 信息系统工程造价指导书(发编委版).pdf
- 地基处理技术_河海大学中国大学mooc课后章节答案期末考试题库2023年.docx VIP
- 六年级上册数学奥数试题-全国168所名牌小学小考必做的600道奥数题(十七)(无答案)人教版.doc VIP
原创力文档


文档评论(0)