1、libfiber介绍
首先说下为什么要写这个博客,一是记录自己学习,二是防止学习后遗忘,这样即使忘了还可以通过博客来回忆起一个大概
开源项目位置:https://github.com/iqiyi/libfiber
libfiber中文介绍:https://github.com/iqiyi/libfiber/blob/master/README_cn.md
开源团队:爱奇艺
相关协程的开源项目不少,boost,libco,libfiber等等
协程的概念在此就不说了,不过协程的实现可以简单说下,我只看过libco和libfiber这两个协程的代码,其中libco是由腾讯团队自己写的汇编实现的协程,协程本质其实是保存当前堆栈信息,然后创造出一个新的堆栈环境去执行(自己思考的,有错误望指出)。而爱奇艺则是借助linux下给出的已有的接口,在此接口上进行一系列逻辑操作, 接口在头文件ucontext.h。
据爱奇艺给出的测评,libfiber性能高于libco。

// libco 实际切换上下文的代码
.globl coctx_swap
#if !defined( __APPLE__ )
.type coctx_swap, @function
#endif
coctx_swap:
#if defined(__i386__)
movl 4(%esp), %eax
movl %esp, 28(%eax)
movl %ebp, 24(%eax)
movl %esi, 20(%eax)
movl %edi, 16(%eax)
movl %edx, 12(%eax)
movl %ecx, 8(%eax)
movl %ebx, 4(%eax)
movl 8(%esp), %eax
movl 4(%eax), %ebx
movl 8(%eax), %ecx
movl 12(%eax), %edx

本文介绍了爱奇艺开源的libfiber库,它是一个高效的协程实现,性能优于腾讯的libco。libfiber利用Linux的接口进行上下文切换,而libco则使用汇编实现。此外,文章探讨了协程在IO操作中的应用,以及为何需要hook系统API以实现同步方式的异步操作。libfiber提供C和C++ API,并特别适合于IO密集型的web服务器场景。
最低0.47元/天 解锁文章
1166

被折叠的 条评论
为什么被折叠?



