赞
踩
一、Synchronous message passing[同步消息传递]如果一个线程执行了MsgSend()方法向另一个线程(可以属于不同进程)发送消息,它会就被阻塞,直到目标线程执行了MsgReceive(),并处理消息,然后执行了MsgReply()。如果一个线程在其他线程执行MsgSend()之前执行了MsgReceive(),它会被阻塞直到另一个线程执行了MsgSend()。消息传递是通过直接的内存copy来实现的。需要巨大消息传递的时候建议通过Shared Message[共享内存]或其他方式来实现。
1、消息传递中的状态迁移客户程序的状态迁移・SEND blocked:调用MsgSend()后,服务程序没有调用MsgReceive()的状态。・REPLY blocked:调用MsgSend()后,并且服务程序调用了MsgReceive(),但是没有调用MsgReply()/MsgError()的状态。当服务程序已经调用了MsgReceive()方法是,客户程序一旦调用MsgSend()就直接迁移如REPLY blocked状态。・READY:调用MsgSend()后,并且服务程序调用了MsgReceive()和MsgReply()的状态。服务程序的状态迁移:・RECEIVE blocked;调用MsgReceive()后,客户程序没有调用MsgSend()时的状态。・READY:消息处理时的状态。MsgReply()调用后不回阻塞。当服务程序已经中止时,调用MsgSend()会返回一个错误,不会被阻塞。
2、Channels and 连接ions[渠道与连接]在QNX Neutrino中消息传递是通过Channels和Connections的,而不是直接在线程之间传递。一个要接受消息的线程必须先生成一个Channel,而一个要发消息的线程必须依附于(Attac
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。