对使用消息队列进行进程间通信的一些笔记

首先,你得先定义一个消息队列的缓存结构,

然后消息队列里我觉得最重要的函数是以下几个:

第一:创建和打开消息队列:

msg_id=msgget(消息队列的名字,IPC_CREAT|0666);

第二:把消息添加到消息队列里面去:

msgsnd(msg_id,&消息缓存,sizeof(要放数据的字节大小),0);

第三:把消息从消息队列中取出来一个:

msgrcv(msg_id,&消息缓存,sizeof(要取数据的字节的大小),0,IPC_NOWAIT);

第四:把消息队列清除:

msgctl(msg_id,IPC_RMID,0);

对于当中信号量做一个解析:

IPC_NOWAIT 没有消息立刻返回;

IPC_RMID:从内核中删除。

然后,还对消息队列的大小做了测试:

linux下消息队列的最大容量是16384个字节,也就是16k,然后单个消息的最大字节数是8192个字节

linux下最多能支持16个消息队列。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用消息队列进行进程间通信时,通常需要借助消息队列服务器来实现。消息队列服务器是一种中间件,负责管理消息队列、转发消息以及提供一些额外的功能,如消息持久化、消息过滤、消息路由等。 消息队列服务器的作用主要有以下几个方面: 1. 管理消息队列 消息队列服务器负责创建、删除和管理各个消息队列,包括对消息队列的读写权限、消息队列的容量限制、消息队列的过期时间等设置。 2. 转发消息 消息队列服务器负责接收发送方发送的消息,并将消息转发给接收方。在消息转发过程中,消息队列服务器需要保证消息的可靠性和顺序性。 3. 提供额外功能 消息队列服务器可以提供一些额外的功能,如消息持久化、消息过滤、消息路由等。消息持久化可以确保消息在服务器宕机或重启后不会丢失;消息过滤可以根据消息类型、消息内容等条件对消息进行过滤;消息路由可以将消息发送到指定的接收方或消息队列中。 需要注意的是,使用消息队列服务器可以简化消息队列使用和管理,但也会引入一些额外的复杂性和开销。在设计系统时,应该根据实际需求选择合适的消息队列服务器或考虑是否需要使用消息队列服务器。如果消息量较小或对消息可靠性和顺序性要求不高,也可以直接在进程使用消息队列,不必依赖消息队列服务器。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值