- 主题:光有协程不够吧?
【 在 GoGoRoger 的大作中提到: 】
: 还得有调度器,并且配合非阻塞的api调用,我看腾讯就重载了io和同步的函数。
: 想一想就头大。
: 发自「今日水木 on Mi Note 3」
我以epoll为中心进行调度。
--
FROM 221.221.53.*
【 在 GoGoRoger 的大作中提到: 】
: 哦哦,我还以为什么呐,这些对我不是什么大问题。
: 发自「今日水木 on Mi Note 3」
重载sleep();
里边有个放yield的函数指针,平时空。
此时的sleep与原来相同。
通过set_yield(),设定yield函数,此时sleep函数就变成协程函数。
协程操作任何的失败,都回到原有的sleep。
#include <sys/socket.h>
#include <sys/time.h>
#include <unistd.h>
#include <fcntl.h>
#include <sc.h>
#ifndef MIN
#define MIN(a,b) ((a)<(b))?(a):(b)
#endif
static T_YIELD yield=NULL;
T_YIELD get_yield()
{
return yield;
}
T_YIELD set_yield(T_YIELD new_yield)
{
T_YIELD oldyield=yield;
yield=new_yield;
return oldyield;
}
--
修改:ylh1969 FROM 221.221.53.*
FROM 221.221.53.*
超级正确。
【 在 hgoldfish 的大作中提到: 】
: c 语言实现 coroutine 最简单了。两三个函数就搞定了。linux 都自带了 swapcontext
:
--
FROM 221.221.53.*