Fibers_fiber bundle

Fibers_fiber bundle要理解Fibers首先需要对抢占式多任务和协作式多任务有所了解抢占式多任务抢占式是指暂停或中断正在执行的计算任务,而不是与其合作。中断后再继续恢复该任务的执行,这种改变又称为上下文切换。其缺点在于操作系统可能会在一个不适当的时间进行上下文切换。例如:Linux的调度程序特权任务Scheduler采用的就是取消进程任务,而不是与其合作。协作式多任务早期的多任务处理系…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

要理解Fibers首先需要对抢占式多任务协作式多任务有所了解

  • 抢占式多任务

抢占式是指暂停或中断正在执行的计算任务,而不是与其合作。中断后再继续恢复该任务的执行,这种改变又称为上下文切换。其缺点在于操作系统可能会在一个不适当的时间进行上下文切换。

例如:Linux的调度程序特权任务Scheduler采用的就是取消进程任务,而不是与其合作。

  • 协作式多任务

早期的多任务处理系统会自愿割让时间给另一个应用程序,这种方法有许多操作系统支持,被称为协作多任务处理。协作多任务依赖于线程,一旦停止则放弃控制权。其缺陷是编写拙劣的代码会堵塞整个系统。

例如:实时嵌入式系统往往采取协作多任务处理方式以获取真正的实时高性能。

什么是Fibers呢?

Fibers是一个轻量的线程,也称为绿色线程。

Fibers是一个可以在Linux等抢占式线程调度下执行协作多任务的Node.js线程库包。

Fibers是一个流程或应用级别的概念,并不对应操作系统的线程。

Fibers提供类似执行流的线程,当操作系统线程是抢占式调用时,开发人员可使用Fibers实现协作多任务。

Fibers的概念类似于协程coroutines,执行时可以被程序暂停或继续。

进程VS线程VS协程VS纤程

在操作系统中,除了进程和线程外,还有一种较少应用的纤程Fiber,又称为协程Coroutine。Fiber常常拿来跟线程做对比,对于操作系统而言,它们都是轻量级的运行态。

通常认为Fiber比线程更加轻量开销更小,不同之处在于:Fiber是由线程或Fiber创建的,Fiber调度完全由用户代码控制。对系统内核而言,是一种非抢占式的调度方式。

Fiber实现了协作式多任务,而线程和进程则受内核调度,依照优先级实现抢占式的多任务。

系统内核是不知道Fiber的具体运行状态,Fiber的使用其实与操作系统是无关的。

Node.js中的Fibers

在Node.js中单线程是仅针对JavaScript而言的,其底层充斥着多线程。如果需要在JavaScript中实现多线程,常见的作法是编写C++的addon来绕过JavaScript的多线程机制。不过这种方法增加了开发调试的成本和难度。

Node.js中node-fibers库为Node提供了纤程的功能,node-fibers采用C语言编写。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200770.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hadoop 资源[通俗易懂]

    hadoop 资源[通俗易懂]1)Cygwin相关资料  (1)Cygwin上安装、启动ssh服务失败、sshlocalhost失败的解决方案  地址:http://blog.163.com/pwcrab/blog/static/16990382220107267443810/  (2)windows2003+cygwin+ssh  地址:http://wenku.baidu.com/view/3777b…

    2022年5月21日
    34
  • matlab2014a安装教程破解版(matlab哪个版本最好用)

    作者:今孝出处:http://www.cnblogs.com/jinxiao-pu/p/6689208.html阅读目录下载安装破解为中文版正文之前电脑重装过,所以要重新安装一个matlab,在大三的时候学过matlab,信息老师给的安装包,但是不知道放哪里去了,记忆力不好,找了些网上的教程和下载地址,真的是坑,一些都是不行的,在这里记录下matlab2…

    2022年4月13日
    58
  • 抢先看:DHS和NIST发布IoT安全指南

    抢先看:DHS和NIST发布IoT安全指南

    2022年3月4日
    39
  • 反射之动态拼接sql字符串「建议收藏」

    反射之动态拼接sql字符串「建议收藏」反射之动态拼接sql字符串前言自己在学习JDBC连接数据库,不用框架手动实现时,个人觉得反射动态拼接sql的思想很好,当然了大家伙觉得好才是真的好(广州好迪,手动狗头),所以才有了本文对该知识点梳理与总结。分享给大家,下面开始步入文章的正文,亲们不要掉队。正文…

    2025年5月27日
    2
  • Step by Step WCF—Transactions

    Step by Step WCF—Transactions

    2021年7月26日
    81
  • python判断linux中文件是否存在_Python判断文件是否存在的三种方法

    python判断linux中文件是否存在_Python判断文件是否存在的三种方法通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。所以最好在做任何操作之前,先判断文件是否存在。这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句、pathlib模块。1.使用os模块os模块中的os.path.exists()方法用于检验文件是否存在。判断文件是否存在importosos.path.exists(test_file.txt…

    2022年6月29日
    118

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号