大家好,今天主要给大家分享一下,线程的使用,通过具体的实例代码来说明一个线程创建到退出到回收的基本流程,后半部分则会通过实例来说明如何能够控制好线程,从临界资源访问与线程的执行顺序控制上引出互斥锁、信号量的概念与使用方法。
第一:为什么要使用线程
场景分析:是否会遇到以下场景感觉难以下手?
场景一:写程序在拷贝文件时,需要一边去拷贝文件,一边去向用户展示拷贝文件的进I度时,传统做法是通过每次拷贝完成结束后去更新变量,再将变量转化为进度显示出来.其中经历了拷贝→>计算-→>显示→>拷贝->计算→>显示...直至拷贝结束.这样的程序架构及其的低效,必须在单次拷贝结束后才可以刷新当前拷贝进度,若可以将进程分支,一支单独的解决拷贝问题,一支单独的解决计算刷新间题,则程序效率会提升很多.
场景二:用阻塞方式去读取数据,实时需要发送数据的时候.例如在进行串口数据传输或者网络数据传输的时候,我们往往需要双向通信,当设置读取数据为阻塞模式时候,传统的单线程只能等到数据接收来临后才能冲过阻塞.再根据逻辑进行发送.当我们要实现随时发送、随时接收时,无法满足我们的业务需求.若可以将进程分支,一支单纯的处理接收数据逻辑,一支单纯的解决发送数据逻辑,就可以完美的实现功能.
基于以上场景描述,多线程编程可以完美的解决上述问题.
1、线程的概念
所谓线程