欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

笔记--什么是协程

程序员文章站 2022-07-15 14:36:39
...

在了解协程之前,我们先来复习下进程和线程:

1.进程:就是应用程序启动的实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。

进程拥有代码和打开的文件资源、数据资源、独立的内存空间。

2.线程:线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。

线程拥有自己的栈空间。

3.对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。无论是进程还是线程,都是由操作系统进行管理的。

4.线程的五种状态:初始化、可运行、运行中、阻塞、销毁

线程不同状态之间的转化是谁来实现的呢?是JVM吗?并不是。JVM需要通过操作系统内核中的TCB(Thread Control Block)模块来改变线程的状态,这一过程需要耗费一定的CPU资源。

5.进程和线程的痛点:

1)涉及到同步锁。

2)涉及到线程阻塞状态和可运行状态之间的切换

3)实际到线程上下文的切换

以上涉及到的任何一点,都是非常耗费性能的操作,这时候协程就要登场了 。

6.什么是协程?

协程,英文Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。最重要的是,协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。

但是Java中并没有对协程的原生支持,可以查看开源框架Kilim进行模拟。

 

引用文章地址:https://mp.weixin.qq.com/s/57IERpGIlvRwYCh6vSbMDA

 

相关标签: 协程