使用 libevent-2.x ,有一个选项EV_TIMEOUT
标记特定fd
的超时:
event_set(&ev, fd, EV_READ | EV_TIMEOUT, worker, priv_data);
通过将超时设置为5分钟,服务器将fd设置为超时。我需要提示释放priv_data
或在服务器端执行某些统计,是否有办法仅通过设置fd
选项(例如,回调)来查找超时EV_TIMEOUT
?
答案 0 :(得分:2)
我不确定我是否只是通过设置EV_TIMEOUT
选项来理解你问题的这一部分。其余部分,我想我能够为你回答。
有一种方法可以检查超时事件是否导致事件返回回调。
假设你的回调原型看起来像这样
(evutil_socket_t fd, short what, void *arg)
然后,您可以通过fd
(what&EV_TIMEOUT)
的超时时间
相关类型在<event2/event.h>
中定义。
如果这不能回答您的问题,您可以在此处找到大量相关信息,例如:http://www.wangafu.net/~nickm/libevent-book/Ref4_event.html