文件名称:pthread_coroutine:使用Posix线程实现的coroutine
文件大小:4KB
文件格式:ZIP
更新时间:2024-07-31 05:43:04
C
使用Posix线程实现的coroutine 协程的关键在于栈的保存沿用,有很多其他版本的C实现的coroutine,如:setcontex, setjmp/longjmp。我认为线程拥有自己的数据栈,天然提供栈的沿用,再利用pthread_mutex_t, pthread_cond_t来做异步唤醒,那pthread一定也可以实现coroutine。 所以我就写了这个库。写的匆忙,质量不高,一定还存在很多问题,欢迎大家提pr。 做了一下测试,与setcontext的coroutine对比,pthread的coroutine大概慢了10倍。在写之前就知道效率一定不高,因为cpu把大量时间浪费在了线程切换上。
【文件预览】:
pthread_coroutine-master
----main.c(770B)
----Makefile(89B)
----coroutine.c(6KB)
----coroutine.h(574B)
----README.md(638B)