zoukankan      html  css  js  c++  java
  • 什么是协程?

    说到协程,你肯定得知道什么是进程和线程吧

    推荐这一篇阅读 进程与线程的一个简单解释

    简单介绍下

    进程是什么呢?

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

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

    线程又是什么呢?

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

    线程拥有自己的栈空间。

    有人给出了很好的归纳:

    对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。

    协程,英文Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程 。

    最重要的是,协程不是被操作系统内核所管理,而完全是由程序所控制(也就是用户执行)。

    这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。

    协程的开销远远小于线程的开销。

    虽然协程这个概念很早就被提出,但真正作为原生特效被广泛应用,确是在本世纪。

    协程的应用

    Lua语言

    Lua从5.0版本开始使用协程,通过扩展库coroutine来实现。

    Python语言

    python可以通过yield/send的方式实现协程。在python3.5以后,async/await成了更好的替代方案。

    Go语言

    Go语言对协程的实现非常强大而简洁,可以轻松创建成百上千个协程并发执行。

    Java语言

    Java语言并没有对协程的原生支持,但是某些开源框架模拟出了协程的功能。

  • 相关阅读:
    16 类成员
    [Tips] WSL ubuntu 18.04 安装python3
    [Tips]ubuntu安装go
    [Notes] 随笔的标题格式说明
    [Tips]Ubuntu手动修改DNS
    [BUG]Ubuntu 16.04 出现“sudo unable to resolve host”
    [Tips]ubuntu 换源
    [Tips]将本地git文件夹上传云端
    [Notes] Dockerfile中COPY命令的简单性
    [BUG]Ubuntu server 16.04安装,无网卡驱动解决
  • 原文地址:https://www.cnblogs.com/niuben/p/10834964.html
Copyright © 2011-2022 走看看