QNX透明分布式处理,原理很简单,就是打通两个QNX之间的消息传递,让一个QNX系统里的进程 ,可以跟另一个QNX系统里的进程,进行“透明“的信息传递。透明的意思是,进程不需要做什么特殊的更改,就可以直接和远程的进程通信了。 我们来看看,在两个QNX系统之间的播放器可以怎么工作?
比如上图,我们有一个叫 “phone” 的QNX系统,还有一个叫“smartspeaker”的QNX系统,通过透明分布式处理已经互相连上了。这意味着,“phone”里的进程 ,除了可以通过“phone”里的消息传递总线,跟phone里的驱动、子系统通信外;还可以直接跟smartspeaker里的驱动、子系统进行通信 我们可以看到,只有phone里有本地音乐播放器。这个播放器,可以如前述一样在phone里播放本地音乐。 - 发消息给 phone 的Audio 驱动,请求使用Audio通道
- 发消息给phone的文件系统,请求打开被选中的歌(文件)
- 发消息给phone的文件系统,请求顺序读取被打开的文件
- 解码读取到的数据
- 把数据发给phone的Audio驱动,由Audio驱动去控制Audio芯片,播放歌曲
- 发消息给phone的显示屏,更新显示屏上的信息(播放时间,剩余时间,歌词 …)
- 重复上述3-6,直到文件读完为止
但如果在7)里面,突然决定这首歌需要在smartspeaker上播出会怎么样呢? - 发消息给smartspeaker的Audio驱动,请求使用Audio通道
- 发消息给phone的文件系统,请求顺序读取被打开的文件
- 解码读取到的数据
- 把数据发给准备好了的smartspeaker的Audio驱动,由Audio驱动去控制Audio芯片,播放歌曲
- 发消息给phone的显示屏,更新显示屏上的信息(播放时间,剩余时间,歌词 …)
- 重复9-12,直到文件读完为止
所以,只要把数据(通过消息传透,经过透明分布总线)发送给另一台机器的Audio驱动,就可以在远程播放出声音来了。而播放器程序本身,不需要做任何的更改。甚至不需要专门的网络通信代码。
|