同一 fd 上不同线程中的多个 libevent 基础
Posted
技术标签:
【中文标题】同一 fd 上不同线程中的多个 libevent 基础【英文标题】:Multiple libevent bases in different threads on the same fd 【发布时间】:2015-12-10 22:12:51 【问题描述】:我很想知道是否有其他人尝试过这个...我正要试一试,但希望其他人在我晚上 11:00 坐在这里之前可以分享一些经验(有早上去上班)试试这个。
如果我加载几个线程,并从每个线程创建一个事件库并在同一个 fd 上创建监听事件,libevent 将如何响应呢?是否只有一个事件库最终会赢得并触发事件,还是每个事件库最终都会触发事件?
【问题讨论】:
我想您的目标是通过使用线程来利用其他 CPU 内核...在这种情况下,您可以做的是让一个线程接收所有传入事件,然后将它们放到一个缓冲区,然后有一个线程池,每个线程池将事件从缓冲区中取出并处理它们。因此,如果您有一个 4 核 CPU,您将拥有一个接收事件的线程和一个由三个工作线程组成的池。我已经这样做了,它有效。 【参考方案1】:好吧,我继续并很快将其编码。不幸的是,正如我所怀疑的那样,每个事件库都会触发一个事件。因此,使用四个线程,每个线程都有自己独特的事件库和同一 fd 上的一组事件,它触发了该函数四次。
【讨论】:
以上是关于同一 fd 上不同线程中的多个 libevent 基础的主要内容,如果未能解决你的问题,请参考以下文章