一、Linux下的epoll
epoll主要有三个核心函数
epoll_create 创建一个epoll
epoll_ctl 在epoll中增加、删除文件描述符
epoll_wait 等待epoll中文件描述符变为可活动的,然后返回结果
二、workflow对epoll的封装
1. 使用epoll_create
//poller.c
static inline int __poller_create_pfd()
{
return epoll_create(1);
}
//poller.c
poller_t *__poller_create(void **nodes_buf, const struct poller_params *params)
{
poller_t *poller = (poller_t *)malloc(sizeof (poller_t));
int ret;
if (!poller)
return NULL;
//创建poller
poller->pfd = __poller_create_pfd();
。。。
free(poller);
return NULL;
}
static int __mpoller_create(const struct poller_params *params,
mpoller_t *mpoller)
{
...
if (nodes_buf)
{
for (i = 0; i < mpoller->nthreads; i++)
{
mpoller->poller[i] = __poller_create(nodes_buf, params);
if (