原csdn地址https://blog.csdn.net/wt1|

蜗牛使劲冲

园龄:7年6个月粉丝:3关注:10

进程,线程及协程初步认识

参考,欢迎点击原文:https://www.cnblogs.com/wangzhaobo/articles/9667765.html
zhihu.com/question/25532384 (知乎)
http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html (形象的动画片)

进程和线程的关系

进程: 资源分配的基本单位。就是执行一个应用程序会创建一个或多个进程,每个进程会去实现它的功能。(它同时也会占用一部分内存的这段计算机操作的状态时间,进程可以创建子进程)
线程: 程序执行的基本单位。就是一个进程执行过程中,分为多个执行任务,可以理解为多端执行代码abc,然后这个多段执行状态简单理解为多个线程,多个线程可以共享进程里面的信息,但是线程间就不能共享了
进程和线程的关系: 一个程序有多个进程,一个进程有多个线程。

介绍:

进程是一个运行在自己内存地址空间里的独立执行体。一个进程由一个或多个线程组成,这些线程是在同一进程下共享同一个内存地址空间的一起工作的执行体。几乎所有’正式’的程序都是多线程的,以便让用户或计算机不必等待,能同时服务多个请求(如 Web 服务器),增加性能和吞吐量。

简短解释:

进程:具有一定独立功能的程序,关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。

线程:指进程内的一个执行单元,也是进程内的可调度实体。线程是进程的一个实体,是CPU调度和分派的基本单位。

协程:协程是一种用户态的轻量级线程,协程的调度完全由用户控制(代码)。

对比(进程与线程):

地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。
资源拥有:同一进程内的线程共享本进程的资源如内存、I/O、cpu等,但是进程之间的资源是独立的。
     一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃会导致整个进程都死掉。所以多进程要比多线程健壮。

举个例子:

QQ的这个软件可以比喻成一个进程,这个进程里传输文字就是开一个线程,传输语音,弹出对话框同样。所以运行某个软件,相当于开了一个进程。在这个软件运行的过程里,多个工作支撑的完成QQ的运行,那么这“多个工作”分别有一个线程,所以一个进程管着多个线程。当一个线程查询数据库等待io过程中又在去执行其他代码了,这一过程就是协程。

知识点:

进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于该进程的资源,一个线程只能属于一个进程,而一个进程可以有多个线程,且至少有一个线程,同时与其他在该进程下的线程共享资源。线程的切换比进程更加节省资源,同样协程因为异步是代码程序切换没有线程切换那样消耗资源所以几乎不额外损耗资源。

拓展:

cat /proc/sys/kernel/pid_max // 查看系统支持的最大线程数
进程间通信方式:管道,消息队列,信号量,共享内存区
线程间通信方式(java):volatile,等待wait/通知notify,共享主内存锁机制

总结:

1.进程适用于不在乎资源,且强调稳定性的方面

2.线程适用于资源的保护管理要求不是很高,倾向多cpu侧重于cpu计算

3.协程主要用在网络请求和等待io方面。

总结:
简单记录,因为我这时候也不是很懂这玩意

本文作者:蜗牛使劲冲

本文链接:https://www.cnblogs.com/warrenwt/p/18074570

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   蜗牛使劲冲  阅读(4)  评论(0编辑  收藏  举报  
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示