C#编程之C#-线程
小标 2018-11-14 来源 : 阅读 875 评论 0

摘要:本文主要向大家介绍了C#编程之C#-线程,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

本文主要向大家介绍了C#编程之C#-线程,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

多线程

通常一个应用就是一个进程,进程中一般是一个线程,执行一个操作,其他操作等待。多线程,看起来是一个进程,有多个线程同时运行,互相不必等待,实际是把cpu的空闲时间利用起来,cpu在多个线程间不断切换。同时,加快进程的响应时间。

创建线程


用threadStart委托类,这委托.net已声明,她的实例代表一个执行指定方法的线程
Thread tr = new Thread(new  threadStart(threadStart委托类对应的方法名,即希望新线程执行的方法));threadStart委托返回一个可转换为线程的对象。
tr.start();
 


管理多线程的多个类

线程执行有不确定性,但可以在一定程度进行管理和控制。
lock(moniter的简要写法)
    lock(this当前线程中的对象){这里的代码,只能this用,this用过后,其他线程的对象用}
interlock类。专用于对递增递减变量的独占访问。
    Thread.interlock.decrement(需要递减的变量)
    Thread.interlock.increment(需要递增的变量)
moniter类。比lock有更多的操作,如wait(等待),puls(释放临界资源给下一个线程),pulsAll(释放临界资源给所有线程)之类的操作。
    moniter.Enter开始独占
    moniter.exit释放独占
mutex类。当需要在临界区,需要在线程间通信时使用。

解决死锁

死锁。线程A独占资源1,需要资源2继续执行,线程B独占资源2,需要资源1继续执行。
为了避免,独占时,所有资源尽量一起独占。独占时,用尝试独占方法,如moniter.tryEnter(),不成功时,就释放已独占资源。

线程间依赖,竞态条件,线程A需要线程B先执行,但线程A先执行了。

为了避免,尽量不把有先后顺序的分到多个线程,如果分到了多个线程,尽量用Thread.Join()方法,让线程A等待线程B执行完成。



共享线程

可不创建线程,直接使用操作系统提供25个线程,在线程池,可跨进程使用,但性能比自己创建的进程低。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C#.NET频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程