通过使用libevent-2.x,有一个选项EV_TIMEOUT可以标记特定的超时fd:
event_set(&ev, fd, EV_READ | EV_TIMEOUT, worker, priv_data);
通过将超时设置为 5 分钟,fd 将被服务器设置为超时。我需要priv_data在服务器端释放或做一些统计的提示,有没有办法fd只通过设置EV_TIMEOUT选项(例如回调)来找到超时?
通过使用libevent-2.x,有一个选项EV_TIMEOUT可以标记特定的超时fd:
event_set(&ev, fd, EV_READ | EV_TIMEOUT, worker, priv_data);
通过将超时设置为 5 分钟,fd 将被服务器设置为超时。我需要priv_data在服务器端释放或做一些统计的提示,有没有办法fd只通过设置EV_TIMEOUT选项(例如回调)来找到超时?
我不确定我是否理解您问题的这一部分“仅通过设置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