Python 官方文档:入门教程 => 点击学习
目录消息队列1.消息队列的原理2.消息队列的接口:2.1创建消息队列2.2向消息队列发送消息2.3接收消息:2.4操作消息队列的接口2.5代码测试:信号量:信号量的原理总结消息队列
int msgget(key_ t key, int msgflg);
参数:
key
:消息队列的标识符msgflg
:创建的标志,例如IPC_CREATIPC_CREAT
:如果不存在就创建:按位或上一个权限(8进制的数字)返回值:
int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
参数:
msgsz
:要发送消息的长度,消息内容的长度msgflg
:创建标记,如果指定IPC_NOWaiT,失败会立即返回0
:阻塞发送IPC_NOWAIT
:非阻塞发送返回值:
ssize_t msgrcv(int msqid, void *msgp, sizet msgsz, long msgtyp, int msgflg);
参数:
msgid
:消息队列IDmsgp
:指向msgbuf的指针,用来接收消息msgsz
:要接收消息的长度msgtyp:接收消息的方式
msgtyp = 0
:读取队列中的第一条消息(不在乎当前对头元素时什么消息类型,将他当作普通队列来处理)msgtyp > 0
:读取队列中类型为msgtyp 的第一条消息。(就是读取对列元素中第一个香蕉)除非在msgflg中指定了MSG_ EXCEPT, 将读取类型不等于msgtyp 绝对值的第一条消息msgtyp< : 0
:读取队列中最小类型小于或等于msgtyp 绝对值的第一条消息msgflg
:创建标记,如果指定IPC_ NOWAIT,获取失败会立刻返回
返回值:
int msGCtl(int msqid, int cmd, struct msqid_ ds *buf);
参数:
msqid
:消息队列IDcmd
:控制命令,IPC_ RMID
,删除命令 ,IPC STAT
,获取状态返回值:
创建一个消息对列,写端发送消息对列,读端读取消息对列中的内容。
我们运行写端代码两次发现消息对列中写入20条消息,
运行读端代码我们发现成功读出
我们运行三次可以发现再无法从消息对列中读出,说明消息对列每次获取到消息后,就会将消息对列中相应的消息出对列
互斥访问:同一时刻,多个进程当中,只有一个进程可以访问临界区资源。多个资源通过信号量保证互斥访问的时候,需要先获取信号量,如果能获取正确的信息量,则才能访问临界资源,如果获取不了,则阻塞等待。等待访问的进程将信号量设置为1,然后再访问。
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!
--结束END--
本文标题: Java进程间通信之消息队列
本文链接: https://www.lsjlt.com/news/143319.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0