LibEvent随笔

本文深入解析了事件循环中EV_WRITE事件的触发机制及缓冲区写操作的具体流程,从事件注册到实际执行的各个环节进行了详细阐述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bufferevent_writecb()->evbuffer_write_atmost()->evthread_notify_base_eventfd()->write()

在event_assign()中,将EV_WRITE事件和bufferevent_writecb关联起来

EV_Write事件的接收如下:
epoll_dispatch()->evmap_io_active()->event_active_nolock()->event_queue_insert()->TAILQ_INSERT_TAIL(),插入到activequeues的list中
evmap_io_active()

根据events到ctx->events中取对应的事件处理结构event;
ctx->events中的event是添加进去的,具体添加过程如下:
event_add()->event_add_internal()->evmap_io_add()添加到ctx->events中


队列事件处理:
event_base_dispatch()->event_base_loop()->event_process_active()->event_process_active_single_queue()中处理list中的事件,event_persist_closure()->evcb_callback()//bufferevent_writecb()


Write过程分析:
bufferevent_write()->evbuffer_add()->evbuffer_invoke_callbacks()->cb_func()//bufferevent_socket_outbuf_cb()

bufferevent_socket_outbuf_cb()->be_socket_add()->_bufferevent_add_event()->event_add()->event_add_internal()
   ->evmap_io_add()->TAILQ_INSERT_TAIL()添加到ctx->events的list中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值