workflow源码解析:epoll

一、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 (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值