首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QNX MsgReceive脉冲

QNX MsgReceive脉冲
EN

Stack Overflow用户
提问于 2015-10-26 22:15:51
回答 2查看 2.5K关注 0票数 2

我有一个问题,因为我不知道_pulse接收是如何工作的。如果我有数据结构

代码语言:javascript
复制
typedef struct _my_data {
msg_header_t hdr;
int data;
} my_data_t;

我只收到我的信息我不知道它是否是脉搏

代码语言:javascript
复制
my_data_t msg;
...
rcvid = MsgReceive(g_Attach->chid, &msg, sizeof(msg), NULL);

当rcvid =0时,程序如何知道它需要以msg (我定义的结构)的形式发送_pulse,或者它是如何工作的。另外,_IO_CONNECT是脉搏吗?如果是,为什么没有rcvid==0?-根据attach.html的说法

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-22 07:17:20

1- _IO_CONNECT不用于脉冲.它用于将系统调用连接到资源管理器。例如,系统调用是open()、close()等。

2-您需要知道服务器或客户端是否在等待脉冲消息。对于脉冲消息,资源管理器中的阻塞函数将是MsgReceivePulse(),客户端将使用MsgSendPulse().。

MsgSendPulse()用于发送脉冲消息,MsgSend()用于正常消息。同样,MsgReceivePulse()用于接收脉冲消息,MsgReceive()用于接收正常消息。请参阅QNX文件以获得更详细的描述。

这两个变体都有不同的参数,比如用于脉冲消息的函数没有返回数据的任何参数,因为脉冲是非阻塞的小消息,它不会阻塞任何应答,但是对于普通消息的函数具有接收数据的参数。

票数 1
EN

Stack Overflow用户

发布于 2015-10-27 18:55:01

例如,您需要创建channelconnection

代码语言:javascript
复制
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);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33356590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档