QNX MsgReceive 脉冲
QNX MsgReceive Pulse
我有一个问题,因为我不知道 _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? - 根据 http://www.qnx.com/developers/docs/6.3.2/neutrino/lib_ref/n/name_attach.html
您需要创建 channel
和 connection
,例如
chid=ChannelCreate(0);
int pid=getpid();
coid=ConnectAttach(0, pid, chid, 0, 0);
并将频道附加到连接......
那么如果你有两个线程........你可以从一个线程中调用 MsgSend 函数,例如 MsgSend(coid, &(message), sizeof(message), &rmsg, sizeof(rmsg));
并且在另一个线程中 rcvid=MsgReceive(chid, (void*)&message, sizeof(message),NULL);
1 - _IO_CONNECT 不用于脉冲。它用于将系统调用连接到资源管理器。示例系统调用有 open()、close() 等
2 - 您需要知道服务器或客户端是否正在等待脉冲消息。对于脉冲消息,资源管理器中的阻塞函数将是 MsgReceivePulse(),客户端将使用 MsgSendPulse()。
MsgSend()用于普通消息,MsgSendPulse()用于发送脉冲消息。
类似地,MsgReceive() 用于接收普通消息,MsgReceivePulse() 用于接收脉冲消息。更详细的说明请参考QNX文档。
两种变体都有不同的参数,例如脉冲消息的函数没有任何 return 数据的参数,因为脉冲是非阻塞的小消息,不会阻塞任何回复,但普通消息的函数有参数接收数据。
我有一个问题,因为我不知道 _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? - 根据 http://www.qnx.com/developers/docs/6.3.2/neutrino/lib_ref/n/name_attach.html
您需要创建 channel
和 connection
,例如
chid=ChannelCreate(0);
int pid=getpid();
coid=ConnectAttach(0, pid, chid, 0, 0);
并将频道附加到连接......
那么如果你有两个线程........你可以从一个线程中调用 MsgSend 函数,例如 MsgSend(coid, &(message), sizeof(message), &rmsg, sizeof(rmsg));
并且在另一个线程中 rcvid=MsgReceive(chid, (void*)&message, sizeof(message),NULL);
1 - _IO_CONNECT 不用于脉冲。它用于将系统调用连接到资源管理器。示例系统调用有 open()、close() 等
2 - 您需要知道服务器或客户端是否正在等待脉冲消息。对于脉冲消息,资源管理器中的阻塞函数将是 MsgReceivePulse(),客户端将使用 MsgSendPulse()。
MsgSend()用于普通消息,MsgSendPulse()用于发送脉冲消息。 类似地,MsgReceive() 用于接收普通消息,MsgReceivePulse() 用于接收脉冲消息。更详细的说明请参考QNX文档。
两种变体都有不同的参数,例如脉冲消息的函数没有任何 return 数据的参数,因为脉冲是非阻塞的小消息,不会阻塞任何回复,但普通消息的函数有参数接收数据。