进程和线程的简单理解

进程和线程定义

进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。

进程、线程简介

现在的操作系统比如Mac OS X,Windows,Linux等,都是“多任务”操作系统,意思就是说,我们可以在操作系统中同时运行多个任务,比如:我们可以一边玩游戏,一边听音乐,一边跟网友嗨聊,这就至少需要同时运行3个任务了,而且还有N个任务是系统后台默默运行的,只是我们看不到而已。而这一个个的任务其实就是一个个的进程,它们保证了我们设备的正常使用。

在我们运行的大部分进程中,都不止同时干一件事,比如游戏,它可以同时显示炫丽的游戏画面、播放刺激的游戏音效、展示游戏角色的各项属性等,这些都要在这一个游戏进程中同时运行,这个时候就需要开辟更多“子任务”了,这些“子任务”我们称之为线程。

运行原理

在过去单核CPU时代,执行多个任务(进程)时,由于CPU是按顺序执行的,所以系统会轮流让各个任务(进程)交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,再执行0.01秒……这样反复交替执行,由于CPU的执行速度很快,我们感觉就像所有任务(进程)都在同时执行一样。

在现在多核CPU时代,可以多核CPU同时进行,真正实现了并行执行多个任务(进程),但是,由于任务(进程)数量远远多于CPU核心数量,所以,操作系统也会自动把多个任务(进程)轮流调度到每个核心上执行,但速度比旧时代的单核要快得多了。

线程的运行跟进程是一样的,同样需要多核CPU的协调处理

进程、线程联系

每个进程至少要有一个事件,所以,一个进程至少要有一个线程。大部分进程都是比较复杂的,都会有多个线程同时执行,多线程同时执行就需要多核CPU的配合才能完成。

总的来说,当我们需要执行多任务的时候,就可以采取以下方案:

  1. 启动多个进程,每个进程只有一个线程,有多个进程执行多个任务。
  2. 启动一个进程,在这个进程中启动多个线程,让多个线程同时去处理多个任务
  3. 启动多个进程,每个进程再启动多个线程,这样同时执行的任务就更多了,不过这种情况使用起来很复杂,实际中很少采用。

小结

在同时执行多任务时,通常各个任务之间还是有关联的,比如有三个任务,必须按照任务1、任务2、任务3的顺序依次执行,或者先执行任务2,然后才能执行任务1和任务3,这还只是一些简单的情况,所以,多进程和多线程使用的复杂度比单进程和单线程要高得多,在开发过程中也是比较麻烦的,但也是必不可少的,程序猿同志们,大家还是要重视。

线程是最小的执行单元,而进程是由最少一个线程组成的,如何调度进程和线程,完全有操作系统决定,程序自己不能决定什么时候执行,执行多长时间。

写的到位不到位的,欢迎各位大佬评论指正!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值