千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:哈尔滨千锋IT培训  >  技术干货  >  协程和纤程的区别是什么?

协程和纤程的区别是什么?

来源:千锋教育
发布人:xqq
时间:2023-10-20 03:33:41

一、协程和纤程的区别

协程和纤程的区别主要在于调度。这两个单词都翻译得不错,coop协作,co就是协的词根,coroutine翻译成协程很巧妙, fiber是纤维,翻译成纤程,对应的thread/线程,process/进程,这几个单词翻译得都比较巧妙。 说回coroutine和fiber. coroutine和fiber的差异点在于,两者的调度不一样,异步api在结果出来前,会释放当前线程,那么在此期间,当前线程就能去搞其他的计算活动,那一个最原始的异步api,一般是以带有callback的形式出现,但是callback有一个问题,就是写起来会变得混乱,因为callback要嵌套进参数里面去。

最开始的stackfull协程,本质上跟微软的Fiber是一样的。只不过,寄存器现场的保存和回复,一般不是由操作系统的API来提供而已。保存和恢复代码百花齐放,我至少知道五种以上知名的代码。除了基本的栈空间,寄存器现场,其他数据就可有可无了。很多协程是肯定不支持TLS数据的,所以,在使用某些函数上就要针对协程的特性来决定能不能用。或者协程库妥协为单线程执行。

延伸阅读:

二、协程是什么

协程(Coroutines)是一种比线程更加轻量级的存在。协程完全由程序所控制(在用户态执行),带来的好处是性能大幅度的提升。

一个操作系统中可以有多个进程;一个进程可以有多个线程;同理,一个线程可以有多个协程。

协程是一个特殊的函数,这个函数可以在某个地方挂起,并且可以重新在挂起处继续运行。

一个线程内的多个协程的运行是串行的,这点和多进程(多线程)在多核CPU上执行时是不同的。 多进程(多线程)在多核CPU上是可以并行的。当线程内的某一个协程运行时,其它协程必须挂起。

以上就是关于协程和纤程的区别的内容希望对大家有帮助。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

python函数中的参数有哪些?

2023-11-14

python中pygal模块如何使用?

2023-11-14

Python描述符中有哪三种方法?

2023-11-14

最新文章NEW

如何使用python any()判断多元素?

2023-11-14

python中doctest库是什么?

2023-11-14

python模块引入的三种方式

2023-11-14

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>