轮子年年有人造,我们也来凑热闹,参考协程实现,大概有以下几种方法:
1)利用setjmp,longjmp
2)利用ucontext接口函数
3)汇编
(线程无非就是多了个抢占功能,由定时器触发,而非自愿让出运行权限)
因为我写的时候还没看到其他帖子,如果看到了,铁定会用最直观的ucontext接口写的(注意,在macOSX中已经标注为废除,头文件得换做sys/ucontext.h),结果就是我用了汇编来写,但是尽量不用汇编来写整个switch_to调度函数(这样有个明显的坏处,那就是用gas/nasm的标准汇编格式写的函数在macOSX下不能编译通过,这个与系统自带的编译工具有关),而用经量