协程和纤程的区别是什么?
一、协程和纤程的区别
协程和纤程的区别主要在于调度。这两个单词都翻译得不错,coop协作,co就是协的词根,coroutine翻译成协程很巧妙, fiber是纤维,翻译成纤程,对应的thread/线程,process/进程,这几个单词翻译得都比较巧妙。 说回coroutine和fiber. coroutine和fiber的差异点在于,两者的调度不一样,异步api在结果出来前,会释放当前线程,那么在此期间,当前线程就能去搞其他的计算活动,那一个最原始的异步api,一般是以带有callback的形式出现,但是callback有一个问题,就是写起来会变得混乱,因为callback要嵌套进参数里面去。
最开始的stackfull协程,本质上跟微软的Fiber是一样的。只不过,寄存器现场的保存和回复,一般不是由操作系统的API来提供而已。保存和恢复代码百花齐放,我至少知道五种以上知名的代码。除了基本的栈空间,寄存器现场,其他数据就可有可无了。很多协程是肯定不支持TLS数据的,所以,在使用某些函数上就要针对协程的特性来决定能不能用。或者协程库妥协为单线程执行。
延伸阅读:
二、协程是什么
协程(Coroutines)是一种比线程更加轻量级的存在。协程完全由程序所控制(在用户态执行),带来的好处是性能大幅度的提升。
一个操作系统中可以有多个进程;一个进程可以有多个线程;同理,一个线程可以有多个协程。
协程是一个特殊的函数,这个函数可以在某个地方挂起,并且可以重新在挂起处继续运行。
一个线程内的多个协程的运行是串行的,这点和多进程(多线程)在多核CPU上执行时是不同的。 多进程(多线程)在多核CPU上是可以并行的。当线程内的某一个协程运行时,其它协程必须挂起。
以上就是关于协程和纤程的区别的内容希望对大家有帮助。

猜你喜欢LIKE
相关推荐HOT
更多>>
大数据分析与数据分析有什么区别?
一、大数据分析与数据分析的区别大数据分析与数据分析有以下区别:1、数据规模不同大数据分析通常处理海量数据,而数据分析则处理小规模数据。2...详情>>
2023-10-11 23:04:34
地址传递和值传递有哪些区别?
一、地址传递和值传递的区别地址传递和值传递都是计算机编程中常用的参数传递方式,它们之间的主要区别如下:1、定义不同值传递:将函数调用中...详情>>
2023-10-11 20:05:08
nodeJs的多线程和一般erlang?
一、nodeJs的多线程和一般erlangnodeJs的多线程Node.js 通过提供 cluster、child_process API 创建子进程的方式来赋予Node.js “多线程”能力。...详情>>
2023-10-11 18:21:42
java中 get和post 区别?
一、java中 get和post 区别1.首先get是用来获取数据的,post是向服务器提交数据。2.get传递形式是通过URL进行传输,以key=value的格式,添加在u...详情>>
2023-10-11 17:16:19热门推荐
大数据分析与数据分析有什么区别?
沸原型模式和应用拷贝构造函数、重载赋值操作符有什么区别?
热原始卡尔曼滤波算法(KF)、扩展卡尔曼滤波算法(EKF)以及无迹卡尔曼滤波算法(UKF)三者之间的区别?
热dos和windows的区别?
新c语言char和int区别?
组策略和组策略对象有什么区别?
地址传递和值传递有哪些区别?
Java中的接口和API 有哪些区别?
手机和计算机软件编程的区别?
nodeJs的多线程和一般erlang?
ArrayList和LinkedList区别?
java中 get和post 区别?
JSP和Blazor有什么区别?
分布式与集群的区别是什么?
技术干货






