gpt4 book ai didi

c++ - 如何在任何事件发生之前唤醒 epoll_wait()?

转载 作者:行者123 更新时间:2023-11-28 05:26:56 25 4
gpt4 key购买 nike

我有一个 Connection 对象,代表一个由 epoll 管理的连接。在发生事件时,调用 Connection::eventWrite()Connection::eventRead()。连接是持久的(始终存在)。

我需要从另一个线程通过那个Connection发送数据,但是不想直接访问对象Connection,因为我不想解决内部的多线程问题Connection 对象(Connectionepoll-thread 和“发送线程”访问)。相反,我想告诉 epoll-thread:“醒来并用 Connection 做点什么”——epoll_wait() 应该返回并且我的代码会发现发生了 CUSTOM EVENT(例如,应该调用某些函数,其中将执行对 Connection 的所需访问(将发送数据分配给对象, 调用 writeEvent()), 然后 epoll_wait() 循环将继续。

唤醒 epoll_wait() 有哪些解决方案,哪个更快?现在,我想到了创建一个 pipe(由相同的 epoll 处理)并向其写入一个字节 1。还有什么 IPC 可以通过 int “epollable” 文件描述符来表达?

最佳答案

Epoll 可以等待 eventfd。在您的情况下,我将创建一个 eventfd 并触发此事件。我认为,这是最干净的解决方案。

关于c++ - 如何在任何事件发生之前唤醒 epoll_wait()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40361869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com