这取决于您是否针对延迟或吞吐量进行了优化.
既然你问过效率,我猜你会考虑吞吐量.在这种情况下,一个经过验证的模式是让中断处理程序读取传感器,排队命令和状态,然后立即返回.
您有一个非中断软件线程从队列中选择命令并为处理程序发布事件.这可以最大限度地减少任务切换时间 您可以使用特定于域的逻辑来组合命令,丢弃不再相关的命令等.
这主要是窗口系统的工作方式.每次单击鼠标,鼠标移动,键盘按下等都会导致命令排队.窗口系统关闭命令并调用相应的处理程序.有一个广泛的逻辑,用于丢弃从队列中挑选出来时无关的命令,组合命令以及加速命令.
网络堆栈使用相同的模型.数据包按网络级排队,然后主循环选择它们并使用控制模型的反转来处理每个数据包.