java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java消息队列

Java进程间通信之消息队列

作者:月半木斤

这篇文章主要为大家详细介绍了Java进程间通信之消息队列,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

消息队列

1.消息队列的原理

2.消息队列的接口:

2.1创建消息队列

int msgget(key_ t key, int msgflg);

参数:

返回值:

2.2向消息队列发送消息

int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);

参数:

返回值:

2.3接收消息:

ssize_t msgrcv(int msqid, void *msgp, sizet msgsz, long msgtyp, int msgflg);

参数:

msgtyp:接收消息的方式

msgflg:创建标记,如果指定IPC_ NOWAIT,获取失败会立刻返回

返回值:

2.4操作消息队列的接口

int msgctl(int msqid, int cmd, struct msqid_ ds *buf);

参数:

返回值:

2.5代码测试:

创建一个消息对列,写端发送消息对列,读端读取消息对列中的内容。

我们运行写端代码两次发现消息对列中写入20条消息,

运行读端代码我们发现成功读出

我们运行三次可以发现再无法从消息对列中读出,说明消息对列每次获取到消息后,就会将消息对列中相应的消息出对列

信号量:

信号量的原理

互斥访问:同一时刻,多个进程当中,只有一个进程可以访问临界区资源。多个资源通过信号量保证互斥访问的时候,需要先获取信号量,如果能获取正确的信息量,则才能访问临界资源,如果获取不了,则阻塞等待。等待访问的进程将信号量设置为1,然后再访问。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!  

您可能感兴趣的文章:
阅读全文