实现了一个协程库

C\C++实现的协程库已经不少了,最近自己也实现了一个.

与大多数协程库不同的是,这个协程库实现的思路是”非侵入式”的,简而言之,使用者不用include相应的头文件,只需要在编译链接的时候链接这个库就好了.

这个协程库中hook了几个网络编程中常用的可能会阻塞I/O操作的API:read,send,accept,在这几个API调用时,进入库本身hook的调用,在它们里面将所要操作的socket加入epoll中,然后让出协程的执行权,在主协程中通过epoll调用之后知道是哪个socket可用了然后再唤醒相应的协程继续操作.同时还hook了pthread_create函数,在创建线程的时候实际上也是创建出一个协程来操作.

库里面做这些,无非是为了对使用者透明:实际上用的是协程,但是使用起来没什么感觉.

代码放在这里: https://github.com/lichuang/libcr

应该还有不少问题,暂未做过压测.

3 Comments

  1. heheeh 说:

    LIBCR  连接打不开

    [回复]

  2. owent 说:

    看起来和 微信的 libco 一个模式。
    https://code.csdn.net/Tencent/libco

    [回复]

  3. 那谁 说:

    正是受他们的启发.

    [回复]

Leave a Reply