【发布时间】:2012-05-18 06:42:12
【问题描述】:
我想要使用的队列中有许多消息(整数),我想使用整数 int consumed 来跟踪我使用了多少消息。
我首先使用ds.msg_qnum > 0 检测队列是否有消息,其中ds 是struct msqid_ds 的对象。如果有消息,那么我调用 msgrcv 来消费消息并增加消费计数器。
所以我有这个:
msgrcv(msgqid, (void *) &message, sizeof(message), 1, 0)
printf("consumed before incr: %d\n", consumed);
consumed++;
每次消息消费后,消费都会显示为相同的随机整数值。另外,我将消息结构设置为将消息数据保存为 int 类型;我不确定这是否是确凿的证据。
【问题讨论】:
-
message是如何声明和初始化的? -
声明:
typedef struct msgbuf { long mtype; int mdata; } message_buf;初始化:message_buf message;