想象一下,有一个库可以启动服务器套接字并管理所有客户端的epoll fd . 由于所有内容都应该是非阻塞的,因此控制权将传递给用户,该用户可能希望对不同的fds进行选择,包括通知库的那个 .

目前,用户指定回调 . 然后,用户可以调用评估epoll的服务例程并调用那些回调,以避免不断调用服务例程,而是执行用户可能想要在epoll fd上等待的其他事情 .

在不暴露epoll fd的情况下向用户公开fd的正确方法是什么?对我来说,更好的解决方案是创建第二个只读文件描述符,如果epoll变得可读,它将变得可读 . 这可能吗?

我知道使用服务线程的可能解决方案,但我更愿意,如果我可以做到这一点,而不会因同步而增加复杂性 .

另一个可能的解决方案是eventfd和一个轮询epoll fd然后触发eventfd的线程 . 但这似乎超过了顶部 .