本文主要是介绍对 进程,线程,协程-我的一些思索,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先先看看定义
1.进程是一个程序在一个数据集中的一次动态执行过程,可以简单理解为 “正在执行的程序”,它是 CPU 资源分配和调度的独立单位。
2.线程是在进程之后发展出来的概念。 线程也叫轻量级进程,它是一个基本的 CPU 执行单元,也是程序执行过程中的最小单元,由线程 ID、程序计数器、寄存器集合和堆栈共同组成。一个进程可以包含多个线程。
3.协程是一种用户态的轻量级线程,又称微线程,英文名 Coroutine,协程的调度完全由用户控制。人们通常将协程和子程序(函数)比较着理解。
与线程比较其优势体现在:
- 协程的执行效率非常高。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。
- 协程不需要多线程的锁机制。在协程中控制共享资源不加锁,只需要判断状态就好。
其实进程、线程、协程的区别很明显,从上面的定义上可以看出来他们之间是一个从属关系,进程就是个正在运行的车间,而线程则是这个车间中开的货车,而协程更像是车上的工人,开货车有开有停,效率上会有所损耗,而工人之间工作协作工作没有切换的消耗。(举个列子不知道好不好,但是这是我的一个理解)。
其次线程的生命周期一直是我们关注的点。
上图取自教材上的图,线程的5个状态的转换关系
创建线程 - 线程就绪 - 线程运行 - 线程阻塞 - 线程销毁
这篇关于对 进程,线程,协程-我的一些思索的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!