掌握多线程技术的好处(掌握多线程技术)
序
初学者在学习编程的时候,很容易因为多线程产生的各种问题而害怕使用多线程。然而,多线程技术是一种可以在发展中不可忽视。基本上在我们的实际应用中,每个项目都会用到多线程,所以多线程技术一定要掌握。
为什么要使用多线程?
随着工业的进步,笔记本和台式机大部分都是双核、4核、8核甚至16核,也很常见。如果是单线程程序,那么50%浪费在双核CPU上,75%浪费在4核CPU上。
所谓的多线程单核CPU上是假多线程。同时,处理器只能处理一块逻辑,但是线程切换更快,看起来像是多个线程同时运行。
多核CPU上的多线程才是真正的多线程。可以让你的多段逻辑同时工作,多线程,真正发挥多核CPU的优势,达到充分利用CPU的目的。
如果你不不要在你的项目中使用多线程,它这不仅是一个技术问题,也是对电脑资源的极大浪费,就像你买了一辆配置非常高的越野车,却只用来日常代步一样。三
为什么不敢用多线程?
之前和一些同学交流的时候,发现很多同学因为之前有问题而不敢用多线程,觉得一朝被蛇咬,十年怕井绳。
多线程容易出问题的一个主要原因是多线程充满了未知数。有些人在使用的时候,发现代码并没有按照预期的过程运行,这其实很正常。
我们必须弄清楚多线程确实是无法控制。从某种意义上说,多线程是由CPU调度执行的,而不是人为控制的。
我们所说的控制多线程是指。NET framework只向开发者开放一些接口,可以间接控制多线程的开始、停止、暂停和继续。
线程的开始和停止
从.开始。Net Framework 4.5,Task提供了一个名为CancellationTokenSource的对象,可以用来控制多线程的启动和停止。
首先,让让我们做一个线程任务。这个任务很简单,只要一直操作一个变量,每0.1秒加1,达到某个值后,重置为0,然后在界面上显示这个值。界面如下:
所以任务方法如下:
对象是CancellationTokenSource的对象,所以我们需要创建一个CancellationTokenSource对象cts:
然后在启动线程按钮的情况下,编写如下代码:
在出现停止线程按钮时,只需要调用cts的Cancel方法:
其实说白了就是通过cts控制cts的IsCancellationRequested属性,进而实现多线程的控制。
线程的暂停继续
多线程的挂起继续。NET为我们提供了另一个对象,——ManualReSetEvent。这个对象将有一个布尔类型的值,就像门一样。True是打开闸门,False是关闭闸门,所以要暂停多线程就调用这个对象的reset方法,要继续多线程就调用这个对象的set方法。使用起来非常简单。
首先,让让我们创建这个对象。我们可以通过构造方法给这个对象赋一个初始值。我这里指的是True,这样它就可以直接运行,不会阻塞。
但是,如果希望这个对象与多线程相关,就必须在多线程方法中体现这个对象的功能。这是调用这个对象的WaitOne方法,意思是在调用处被阻塞,通过判断真假来决定是否继续执行。就像大家开车经过高速收费站一样,即使现在广泛使用ETC,也需要在入口处减速。有一个ETC识别的过程,识别成功后才会抬杆。杆子不会自动抬起。这是
所以线程执行代码如下:
相比之下,它实际上增加了一个手册。WaitOne()。
线程暂停代码:
线程延续代码:
自动重置事件
AutoResetEvent和ManualResetEvent的用法非常相似。区别在于一个是手动的,一个是自动的。AutoResetEvent设置后将自动重置。这体现在多线程上,就是只会执行一次,就像大家进入社区一样。如果有10辆车排队等候,在自动模式下,一次只能有一辆车进入。如果是手动模式,保安可以控制车门和闸机打开,等待10辆车全部开出。
推荐阅读
- 孙振耀:管理是永远的蓝海,一种智能管理新模式:个人化与数据驱动
- 5700x满载功率(5700xm)
- 刑事轻伤鉴定标准 轻伤鉴定标准2021
- fsd是什么意思,fsd
- 盟区战卡对战设置(盟区战卡)
- 关于小学生的交通事故案例 交通事故案例100例
- 河北省各地区车牌号的代码含义一样吗,河北省各地区车牌号的代码含义
- 摩托罗拉me860评测(摩托罗拉me860)
- 无线通信协议的概念(无线通信协议的6个标准)
- 律师咨询免费24小时在线吗? 武汉律师咨询免费24小时在线
- 河南中央空调公司(河南中央空调)
- 全国雷诺Initiale4s店大全,雷诺Initiale4s店电话地址查询
- iphone14发布时间和上市时间价格(iphone14发布时间和上市时间)
- 劳动仲裁需要什么证据材料 劳动仲裁需要什么证据
- 格力空调扇叶打不开是什么情况(格力空调扇)
- 轿车行车记录仪什么牌子好,行车记录仪什么牌子好
- 13003开关管电路图12v(13003开关电源电路图)
- eagletech(eagletec)
- 雷克萨斯es300h新款价格2023款,雷克萨斯es300h新款价格