问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Linux多线程同步之消息队列有何特点

发布网友 发布时间:2022-04-22 02:58

我来回答

1个回答

热心网友 时间:2023-07-10 10:19

消息队列是消息的链表,存放在内核中并有消息队列标示符标示。
msgget用于创建一个新队列或打开一个现存的队列。msgsnd将新消息加入到消息队列中;每个
消息包括一个long型的type;和消息缓存;msgrcv用于从队列中取出消息;取消息很智能,不一定先进先出
①msgget,创建一个新队列或打开一个现有队列
#include
int msgget ( key_t key, int flag );
//成功返回消息队列ID;错误返回-1
②msgsnd: 发送消息
#include
int msgsnd( int msgid, const void* ptr, size_t nbytes, int flag )
//成功返回0,错误返回-1
a:
flag可以指定为IPC_NOWAIT;
若消息队列已满,则msgsnd立即出错返回EABAIN;
若没指定IPC_NOWAIT; msgsnd会阻塞,直到消息队列有空间为止
③msgrcv: 读取消息:
ssize_t msgrcv( int msgid, void* ptr, size_t nbytes, long type, int flag );
a. type == 0; 返回消息队列中第一个消息,先进先出
b. type > 0
返回消息队列中类型为tpye的第一个消息
c. type < 0
返回消息队列中类型 <=
|type| 的数据;若这种消息有若干个,则取类型值最小的消息
消息队列创建步骤:
#define
MSG_FILE "."
struct msgtype {
long mtype;
char buffer[BUFFER+1];
};
if((key=ftok(MSG_FILE,'a'))==-1)
{
fprintf(stderr,"Creat Key Error:%s\n", strerror(errno));
exit
(1);
}
if((msgid=msgget(key, IPC_CREAT | 0666/*PERM*/))==-1)
{
fprintf(stderr,"Creat Message
Error:%s\n", strerror(errno));
exit
(1);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? 电脑中win键是哪个键 键盘windows是哪个键 021-60444623电话 说是建行信用卡 真假啊 4006763673给我打电话说是建行信用卡中心的给我提... 02160345757是不是建行信用卡的电话 怎么把iphone所有照片按时间排列? 换机助手导入苹果13相册按时间顺序排列 银行信用卡的外呼电话是搞什么用的 建行信用卡外呼怎么老是打电话 苹果手机照片怎么按照拍摄时间排序 windows是哪个键子 iphone相簿里的照片怎么排顺序 95134是什么电话? 怎么把iphone所有照片按时间排列 请问02138695888到底是怎么电话 今天接到02138695888电话,说是建行信用卡中心催款... 苹果手机相册照片怎么按时间排序 苹果13相册怎么按天显示 台式电脑什么牌子的性价比最高 怎么把自己制作的小视频上传到迅雷,做成迅雷链接... linux系统编程中的消息队列该怎么使用呀?? linux 消息队列编程 linux系统自带的消息队列和rabbitmq有什么区别? 请教一个关于linux消息队列的问题 linux系统中哪些可以用于进程间的通信消息队列临界... Linux下 用消息队列收发长度不同的消息 linux 有没有直接发送消息到队列的命令 请问Linux下如何清除消息队列queue中的内容 Linux下编程消息队列怎么封装较好,怎么保证2个进... linux 消息队列 的权限问题 如何释放linux过时消息队列 高手进!在Linux系统中用消息队列实现两个进程之间... linux消息队列,读而不删怎么弄 linux编程的利用消息队列在两个进程间通信,怎么写... linux 消息队列什么时候删除 linux 程序异常退出,怎么删除消息队列 win10浏览器无法访问页面 win10浏览器无法显示此页怎么办 win10为什么ie浏览器总是无法访问页面 联想win10系统自带edge浏览器打开无法访问该页面,...