造轮子--协程网络后台srv---设计1

1、上下文切换方式

 a)  linux 接口 getcontext、makecontext、swapcontext、setcontext;

 b) boost Context 库;(Boost.Coroutine 库)

 c) 汇编, 类似  setjump , longjump 

 这里为了深入理解,采用 第三种方式 .

协程切走伪代码:

     save 上下文

     if( 0 ==  asm setjmp  )

    {

        //执行调度器的代码逻辑

    }

    else

    { //调度器恢复上下文,返回

    }

  

协程恢复伪代码:

    longjmp(1) 

 

posted @ 2016-12-02 09:06  专业菜鸟  阅读(123)  评论(0)    收藏  举报