C#多线程的使用及知识

多线程

程序同时完成多件事情,就是所谓的多线程程序,提高程序的性能和运行速度

并发

同时进行的活动,在C#中被称为并发

一个进程包含多个线程

多线程的优点

可以尽可能的对用户的操作做出反应,以便提高良好的用户体验,

缺点:

1.创建进程和线程的数目会受到可用内存的限制

2.跟踪大量的线程,将占用大量的处理器时间,如果线程过多,不会产生很明显的进度,

3.如果大多数的线程在一个进程中,其他进程中的调度频率就会很低

4.多线程控制代码,代码更复杂,逻辑冲突,可能产生bug

5.销毁线程需要了解可能发生的问题,并处理

CheckForIllegalCrossThreadCalls设置为false

新创建的线程不能访问UI线程创建的窗口控件,这时如果想要访问窗口的控件可将窗口构造函数中的CheckForIllegalCrossThreadCalls设置为false;然后就能安全的访问窗体控件

程序初始化时设置这个属性,再使用微软Framework类库中的控件,系统将不会再抛出你线程的异常信息。

线程的实现

C#中使用Thread类实现线程

1.使用Thread类创建线程

线程的休眠,sleep

加入线程:Join,

终止线程:abort

priority设置线程优先级

线程同步

防止线程之间的资源冲突,如抢票全部抢完

1.使用lock关键字,实现线程同步,用来保证代码块运行完成,不会被其他线程中断,它是通过在代码块运行期间为给定对象获取互斥锁来实现的。lock(this){}

2.使用Monitor类,实现线程同步。Monitor类提供了同步对对象访问机制,,它通过向单个线程授予对象锁,来控制对对象的访问,,对象锁提供限制访问代码块(通常为临界区)的能力,当一个对象拥有对象锁时,其他任何线程都不能获取该锁。

Monitor.Enter(this)锁定代码块

Monitor.Exit(this)解锁代码块

3.使用Mutex实现线程同步,Mutex类和Monitor类相似,它防止多个线程,在某一时间同时执行某个代码块,不同的是,Mutex可以用来跨线程的线程同步

4.线程池

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值