c++ - 如何在 libevent 中共享回调

标签 c++ sockets libevent

我用 libevent 制作的大多数应用程序都涉及一个读取回调,每当为请求打开一个新连接时,我都会使用 ::event_new() 分配一个新事件,然后将该事件添加到通过 ::event_add()

的事件库

但这样做的问题是,每次打开新请求时,我都会分配内存并将其添加到事件循环中,而实际上我应该共享文件描述符的回调和事件。授予内存分配不是此类应用程序的瓶颈,libevent 是否提供某种方式来与多个文件描述符共享事件?

最佳答案

你不应该在文件描述符之间共享事件。这会在您的应用程序中造成困惑。 event_new() 创建一个附加到您的文件描述符的事件。

您可以尝试使用 event_assign() 重新分配消耗的事件,但 libevent 文档明确指出不推荐这样做。此外,在某种类型的池中管理花费的事件可能并不像看起来那么微不足道,并且可能不会有任何明显的性能提升。

关于c++ - 如何在 libevent 中共享回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44580743/

相关文章:

c++ - 生成特定长度的 powerset

c++ - 结构和对象创建

c++ - 如何有效地将结构 vector 写入文件?

c - 如何在 Windows 上编译 memcached?

c++ - 在 C++ Win32 中获取计算机上的用户配置文件列表

ruby - 使用 ruby​​ 的聊天应用程序

c++ - 如何在 Windows - Visual Studio 上用 C++ 将多个客户端连接到单个服务器?

scala - Spark Scala UDP 在监听端口上接收

python - 尝试安装旧的 python 应用程序时出现 libevent 错误

macos - 配置: error: C compiler cannot create executables