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语言编写。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • virus.win32.parite.H查杀病毒的方法

    virus.win32.parite.H查杀病毒的方法virus.win32.parite.H病毒的查杀方法昨天电脑中了virus.win32.parite.H病毒,搞了2个多小时最终搞定了。以下记录下我的解决方法。第一步:下载Win32.Parite病毒专杀工具下载地址:http://download.csdn.net/detail/wuxiaokaixinguo/6333233第二步…

  • java打印菱形思路[通俗易懂]

    java打印菱形思路[通俗易懂]总共2个大的for循环  里边有小的对吧第一个大的for是打印菱形的上半部分for(i=1;i  { 这个小的for是打印每一行前边的空格   for(j=1;j   System.out.print(“”); 这个是打印星星的   for(j=1;j   System.out.print(“*”); 这个是打印完一行的换行  S

  • Google Play 应用上架流程

    转自:https://www.jianshu.com/p/e40e78a279b7公司的App需要在GooglePlay上架,我表示一脸懵逼~虽然做了几年Android开发了,但是都是在国内的应用市场上架App,GooglePlay还真没接触过,废话不多说直接开搞~要在GooglePlay上架应用得有两个前提:1.要科学上网(不懂科学上网?自己去百度或者…

  • MATLAB分段函数及应用实例

    MATLAB分段函数及应用实例简单实例:用matlab画分段函数        当x<0时 y=5*sin(x);        当x>=0且x<=5时y=x^2;        当x>5时y=(8-x)^2+16.x=-5:0.001:10;y=5*sin(x).*(x<0)+x.^2.*(x>=0&x<=5)+((8-x).^2+16).*(x>5);p…

  • @NacosInjected private NamingService namingService 为空

    @NacosInjected private NamingService namingService 为空

  • 国内常用NTP服务器地址及IP(阿里云时间服务器)

    国内常用NTP服务器地址及IP(阿里云时间服务器)210.72.145.44(国家授时中心服务器IP地址)133.100.11.8日本福冈大学time-a.nist.gov129.6.15.28NIST,Gaithersburg,Marylandtime-b.nist.gov129.6.15.29NIST,Gaithersburg,Marylandtime-a.timefreq.bldrdoc.gov132.

发表回复

您的电子邮箱地址不会被公开。

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