(这适用于低延迟系统)
假设我有一些代码将接收到的 UDP 数据包传输到共享内存区域,那么我如何通知应用程序(在用户模式下)现在是时候读取共享内存了?我不希望应用程序不断轮询占用 CPU 周期。
是否可以在网络堆栈中插入一些代码,以便在写入共享内存后立即调用我的应用程序代码?
编辑我添加了一个 C 标记,但应用程序将使用 C++
(这适用于低延迟系统)
假设我有一些代码将接收到的 UDP 数据包传输到共享内存区域,那么我如何通知应用程序(在用户模式下)现在是时候读取共享内存了?我不希望应用程序不断轮询占用 CPU 周期。
是否可以在网络堆栈中插入一些代码,以便在写入共享内存后立即调用我的应用程序代码?
编辑我添加了一个 C 标记,但应用程序将使用 C++
除非您打算使用实时操作系统,否则没有“即时”协议。CPU 资源以几毫秒为单位可用,通常您的用户线程需要一些时间才能理解它可以继续。
考虑到以上所有,任何形式的 IPC 都可以:本地套接字、信号、管道、事件描述符等。性能上的实际差异将是悲惨的。
此外,共享内存的使用可能会导致维护/调试中不必要的复杂性,但这是设计人员的选择。