使用libevent2配对bufferevents的问题

时间:2011-06-02 17:09:43

标签: c libevent tor

我有这个多线程的应用程序,每个线程有一个循环,每个线程有两个配对的bufferevents,用于在这些和主线程之间发送/接收数据。

这在理论上。在实践中,bufferevent_pair_new()返回正常,但是创建了两个没有可用描述符的bufferevent结构,所以当我用它们调用bufferevent_getfd()时,我得到-1。

当然,当我尝试将它们附加到事件循环而没有先前添加任何其他事件时,线程返回并引发“无事件循环”错误。

我在Tor中看到类似的东西(成对的bufferevents在线程之间进行通信)。我做得对吗?我需要别的吗?

1 个答案:

答案 0 :(得分:0)

我知道这是一个较老的问题,但我碰巧找到了寻找其他信息的答案,所以我想我会在这里发布,以防有​​人仍然需要它。最初的答案是http://archives.seul.org/libevent/users/Jul-2011/msg00009.html

如果它被取消,我也会总结一下。

配对缓冲区事件没有任何内部事件,因此它们不会阻止事件循环达到无事件挂起状态并且循环退出。给出的解决方法是添加一个没有做任何事情的计时器事件。但是它会使循环结束。有可能修复它,以便配对的缓冲区事件将阻止循环退出,但我不知道它是否曾经完成。上面链接的通信与原始帖子的日期相同,甚至可能是通过另一个资源对OP的响应。