java system V消息队列_System V IPC 之消息队列

消息队列和共享内存、信号量一样,同属 System V IPC 通信机制。消息队列是一系列连续排列的消息,保存在内核中,通过消息队列的引用标识符来访问。使用消息队列的好处是对每个消息指定了特定消息类型,接收消息的进程可以请求接收下一条消息,也可以请求接收下一条特定类型的消息。

相关数据结构

与其他两个 System V IPC 通信机制一样,消息队列也有一个与之对应的结构,该结构的定义如下:

struct msqid_ds

{

struct ipc_perm msq_perm;

struct msg *msg_first;

struct msg *msg_last;

ulong msg_ctypes;

ulong msg_qnum;

ulong msg_qbytes;

pid_t msg_lspid;

pid_t msg_lrpid;

time_t msg_stime;

time_t msg_rtime;

time_t msg_ctime;

}

该结构中各个字段的说明如下。

msg_perm:对应于该消息队列的 ipc_perm 结构指针。

msg_first:msg 结构指针,msg 结构用于表示一个消息,此指针指向消息队列中的第一个消息。

msg_last:msg 结构指针,指向消息队列中的最后一个消息。

msg_ctypes:记录消息队列中当前的总字节数。

msg_qnum:记录消息队列中当前的总消息数。

msg_qbytes:记录消息队列中最大可容纳的字节数。

msg_lspid:最近一个执行 msgsnd 函数的进程的 PID。

msg_lrpid:最近一个执行 msgrcv 函数的进程的 PID。

msg_stime:最近一次执行 msgsnd 函数的时间。

msg_rtime:最近一次执行 msgrcv 函数的时间。

msg_ctime:最近一次改变该消息队列的时间。

消息队列所传递的消息由两部分组成,即消息的类型及所传递的数据。一般用一个结构体来表示。通常消息类型用一个正的长整数表示,而数据则根据需要设定。比如设定一个传递 1024 个字节长度的字符串数据的消息如下&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值