我有一个问题,因为我不知道_pulse接收是如何工作的。如果我有数据结构
typedef struct _my_data {
msg_header_t hdr;
int data;
} my_data_t;我只收到我的信息我不知道它是否是脉搏
my_data_t msg;
...
rcvid = MsgReceive(g_Attach->chid, &msg, sizeof(msg), NULL);当rcvid =0时,程序如何知道它需要以msg (我定义的结构)的形式发送_pulse,或者它是如何工作的。另外,_IO_CONNECT是脉搏吗?如果是,为什么没有rcvid==0?-根据attach.html的说法
发布于 2015-12-22 07:17:20
1- _IO_CONNECT不用于脉冲.它用于将系统调用连接到资源管理器。例如,系统调用是open()、close()等。
2-您需要知道服务器或客户端是否在等待脉冲消息。对于脉冲消息,资源管理器中的阻塞函数将是MsgReceivePulse(),客户端将使用MsgSendPulse().。
MsgSendPulse()用于发送脉冲消息,MsgSend()用于正常消息。同样,MsgReceivePulse()用于接收脉冲消息,MsgReceive()用于接收正常消息。请参阅QNX文件以获得更详细的描述。
这两个变体都有不同的参数,比如用于脉冲消息的函数没有返回数据的任何参数,因为脉冲是非阻塞的小消息,它不会阻塞任何应答,但是对于普通消息的函数具有接收数据的参数。
发布于 2015-10-27 18:55:01
例如,您需要创建channel和connection
chid=ChannelCreate(0);
int pid=getpid();
coid=ConnectAttach(0, pid, chid, 0, 0);并在连接上附加通道.
然后,如果有两个threads...............from线程,一个线程可以调用MsgSend函数,例如MsgSend(coid, &(message), sizeof(message), &rmsg, sizeof(rmsg));和另一个线程rcvid=MsgReceive(chid, (void*)&message, sizeof(message),NULL);。
https://stackoverflow.com/questions/33356590
复制相似问题