我有一个Connection
对象,表示由epoll
管理的连接。在事件上,调用Connection::eventWrite()
或Connection::eventRead()
。连接是持久的(始终存在)。
我需要从另一个线程通过Connection
发送数据,但不想直接访问对象Connection
,因为我不想解决Connection
中的多线程问题object(Connection
是从epoll
- 线程和“发送线程”访问的。相反,我想告诉epoll
- 主题:“唤醒并使用Connection
执行某些操作” - epoll_wait()
应该返回,我的代码会发现CUSTOM EVENT
是发生(例如,应该调用某个函数,其中将执行对Connection
的所需访问(将数据发送到对象,调用writeEvent()
),然后epoll_wait()
- 循环将继续。
唤醒epoll_wait()
以及哪一种更快会有哪些解决方案?现在,我想出了一个pipe
(由同一个epoll
处理)并向其写一个字节1
。还有哪些IPC可以通过int
“epollable”文件描述符来表达?
答案 0 :(得分:1)
Epoll可以等eventfd
。在您的情况下,我创建一个eventfd
并触发此事件。我认为,这是最干净的解决方案。