进程与线程概念及线程的优点

第一次写技术博客,先聊一聊进程和线程

进程

       进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

初看这段文字估计大家都没有对进程的一个具体概念。那么请看下图

看了此图,我们可以看到每个都是操作系统中运行的exe程序,没错每个exe程序就可以理解成一个进程。

        我们可以查看“windows任务管理器”中的列表,完全可以将运行在内存中的exe文件理解成进程,进程是手操作系统管理的基本运行单元。

线程

        线程我们可以理解成是在进程中独立运行的子任务,举个大家都熟悉的例子,比如:我们常用的QQ,在QQ运行中是有很多子任务在同时运行的,这些子任务比如:QQ的视频,QQ的表情,下载文件,上传文件等,这些不同的任务或者说是不同的功能都可以同时运行,其中的每一项任务完全可以理解成为“线程”在工作。

        那这样有什么优点呢?更具体的来讲,使用多线程有什么优点?如果读者是有过使用“windows”系统,那么肯定会有比较深的体会,,它可以最大限度的利用CPU的空闲时间来处理其他的任务,它可以多任务操作(边聊天,边看视频),如果现在你是单线程操作(聊天时,视频就不能继续观看),这样想想都会很烦恼。

       为了更加有效的理解多线程的优势,可以看下面的模型图理解一下单任务的缺点。

      

       在图中(单任务环境),任务1和任务2是两个完全独立、互不相关的任务,任务1是在等待远程服务器返回数据,以便进行后期的处理,这时CPU一直处于等待状态,一直在“空运行”。如果任务2是在10秒之后被运行,虽然执行任务2用的时间非常短,仅仅用了1秒,但也必须在任务1运行结束后才可以运行任务2。本程序是运行在单任务环境中,所以任务2有非常长的等待时间,系统运行效率大幅度降低,单任务的特点就是排队执行,有严格要求执行顺序的时候我们可以使用单任务程序(也就是我们所说的同步),举例:我们在windows系统中所用到的cmd中输入就是使用的单任务。

       在图中(多任务环境)中我们可以发现,CPU完全可以在任务1和任务2之间来回切换,使任务2不必等到10秒再运行,系统的运行效率大大得到了提升。这就是要使用多线程的原因。这也是多线程的优点(异步)。

       这边我们需要注意多线程是异步的,所以千万不要把我们的开发工具里的代码顺序当成线程执行顺序,线程被调用是随机的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值