0

我第一次使用 libevent,并且在尝试让我的应用程序在调用读取回调之前不运行时遇到了问题。我也在使用缓冲事件。本质上,我正在尝试避免主应用程序循环中的睡眠,而是让操作系统在有数据要从套接字读取时唤醒进程(通过 libevent)。有人知道怎么做吗?我在 libevent 的 alpha 版本中发现,您可以将基本事件循环设置为 EVLOOP_NO_EXIT_ON_EMPTY,但是通过查看 libevent 代码,我相信它只会用完我的整个过程。我也读过这个质疑将套接字设置为在 Windows 上阻塞是一个坏主意,这就是为什么我也没有将其作为解决方案的原因。我也会用 libuv 和 libev 标记它,因为它们相似并且可能有助于我的解决方案。

4

1 回答 1

0

您必须使用以下 api,某些 API 可能已过时,您可以在 google 搜索新的。

 struct event_base *base ;  
 struct event g_eve
 base = event_init(); 
 //after binding the socket register your socket for read event using below api  
 event_set(&g_eve, SockFd, EV_READ | EV_PERSIST, CallbackFunctin, &g_eve);  
 event_add(&g_eve, NULL);
 event_base_dispatch(base);
于 2014-03-12T08:13:12.733 回答