QNX手册学习笔记——IPC(3)

寵の児 提交于 2019-11-30 10:57:23
读QNX_Neurino_RTOS_System_Architecture 的Interprocess Communcation章的Events节。
QNX Neutrino提供了event处理的子集。POSIX和他的实时拓展接口提供了许多异步处理方法。对于QNX的内核而言额外地提供了一些如pulses的通知技术。QNX将event机制封装为一个子集,从一定意义上来讲,实现了应用程序与各种通知技术的解耦。举例来讲,应用程序不关注底层的通知技术究竟是POSIX实时信号队列还是UNIX信号队列。
一个正在执行的线程可能遇到三种事件源:
  • 其他线程调用的MsgDeliverEvent(软)
  • 中断处理(硬)
  • 计时器到时(硬)
事件(event)的种类也各式各样,下一节讲到的signal便是其中一种。QNX并不是在server端线程根据不同的事件种类选用不同的通知技术,通知客户端(client)线程。而是client端将信号事件封装为小甜饼,发送给server端,server端不立即处理,而是过一段时间需要通知client时,将小甜饼反馈给client。这样将server端对event的处理转嫁给了client。如下图所示。
  

通过ionotify函数可以实现Client的异步传输,即当读取文件时,客户端请求文件数据等耗时的操作时,不需要干等,而是可以异步地继续执行其他的操作。(此处有疑惑,下一节调用SignalWaitInfo等待阻塞的特殊信号,需要同步,貌似不支持这种异步操作)。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!