我有一个线程正在等待在 FIFO 上接收到的事件。大多数事件是从同一进程中的另一个线程发送的配置事件。我希望线程也能够通过让中断处理程序写入 FIFO 来处理中断事件,这可能吗?
欢迎任何其他建议而不是使用 FIFO!
是的,它可以。使用中断处理程序是处理异步 I/O 的较新方法之一。
更典型的方法是使用 select、poll 或 Linux epoll 命令。
这些可以说是更受欢迎一些,因为不是在事件可用时“中断”您的代码 - 您可以处理事件并在完成前一个事件时返回“轮询”循环以获取更多事件。这些机制可以同时等待多个不同的文件描述符,并返回任何一个可用的。
中断处理程序可能不是您想要做的 - 因为您不一定希望在处理一个事件时被中断,以知道另一个事件已准备好。如果你这样做了,你可能最终还是将请求排队以供以后处理——这正是 poll 和 epoll 开始的内容。
如果你在 Linux 下,“epoll”是最合适的。如果您不是(或希望符合 POSIX),请使用“poll”。“select”是一种“较旧”的方法,也不会对请求进行排队。