当前位置: 首页 > news >正文

一个网站的建设方案ic设计公司排名

一个网站的建设方案,ic设计公司排名,做网站是什么行业,静海网站建设制作概念 消息队列#xff0c;是消息的链接表#xff0c;存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。 特点 1.消息队列是面向记录的#xff0c;其中的消息具有特定的格式以及特定的优先级。#xff08;消息队列是结构体#xff09; 2.消息队列独立于发送与接…概念 消息队列是消息的链接表存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。 特点 1.消息队列是面向记录的其中的消息具有特定的格式以及特定的优先级。消息队列是结构体 2.消息队列独立于发送与接收进程。进程终止时消息队列及其内容并不会被删除。 3.消息队列可以实现消息的随机查询,消息不一定要以先进先出的次席读取,也可以按消息的类型读取。 两者的队列ID需相同才能成功实现存放数据和取数据如图都指向队列1的最后一个。 消息队列与管道的不同点写入读取后内容还存在于Linux内核中不会跟管道一样读取完就消失。 创建 从消息队列特点可知两个进程分别需要同队列ID相同的队列进行写入数据并读取数据此时要想成功创建一个消息队列需关心两个问题 问题一进程B如何添加消息到队列 问题二进程A如何读取队列的消息 头文件 #include sys/msg.h 常用API msgget() 创建或打开消息队列成功返回队列ID失败返回-1 int msgget(key_t key, int flag); key是一个索引值为非负数将通过索引值在Linux内核找到队列flag打开队列的方式 在以下两种情况下msgget将创建一个新的消息队列 1、如果没有与键值key相对应的消息队列并且flag中包含了IPC_CREAT标志位。 msgget(key,IPC_CREAT); 2、key参数为IPC_PRIVATE。 msgget(key,IPC_PRIVATE);msgsnd() 添加消息成功返回0失败返回-1 int msgsnd(int msqid, const void *ptr, size_t size, int flag);msqid消息队列的ID ptr写入的数据指向消息缓冲区的指针此位置用来暂时存储发送和接收的消息是一个用户可定义的通用结构形态如下 struct msgbuf {long mtype; //消息类型必须大于0char mtext[1];//消息文本 }; size数据的长度 flag0,表示忽略表示进程将被阻塞直到函数可以从队列中得到符合条件的消息为止还有许多此处省略 msgrcv() 读取消息成功返回消息数据的长度失败返回-1 int msgrcv(int msqid, void *ptr, size_t size, long type,int flag);msqid消息队列的ID ptr写入的数据指向消息缓冲区的指针此位置用来暂时存储发送和接收的消息是一个用户可定义的通用结构形态如下 struct msgbuf {long mtype; //消息类型必须大于0char mtext[1];//消息文本 }; type消息类型 type  0返回队列中的第一个消息type 0返回队列中消息类型为 type 的第一个消息type 0返回队列中消息类型值小于或等于 type 绝对值的消息如果有多个则取类型值最小的消息 可以看出type值非 0 时用于以非先进先出次序读消息。也可以把 type 看做优先级的权值。 size数据的长度 flag0,表示忽略表示进程将被阻塞直到函数可以从队列中得到符合条件的消息为止还有许多此处省略 代码展示 get.c #include stdio.h #include sys/types.h #include sys/ipc.h #include sys/msg.hstruct msgbuf {long mtype;char mtext[128]; };int main() {int msgId;//创建消息队列IDstruct msgbuf readBuf;//定义一个读取数据的结构体msgId msgget(1234,IPC_CREAT|0777);//在内核中打开或建立键值为1234的权限为0777的消息队列if(msgId -1)//如果创建失败则执行下面代码{printf(create queue failed\n);}msgrcv(msgId,readBuf,sizeof(readBuf.mtext),888,0);//从队列中获取888类型的数据并存放到结构体的mtext中如果队列中未出现888类型的数据则程序阻塞在这里这里的888需要与写入队列类型数据一致printf(read from queue:%s\n,readBuf.mtext);struct msgbuf sendBuf {999,thank you for reach\n};//读取完毕后将字符串内容写入到999类型的数据中这里的999类型需要与读取的类型数据一致msgsnd(msgId,sendBuf,strlen(sendBuf.mtext),0);//将上一行的结构体数据写入1234消息队列中return 0; }send.c #include stdio.h #include sys/types.h #include sys/ipc.h #include sys/msg.h #include string.hstruct msgbuf {long mtype;char mtext[128]; };int main() {int msgId;struct msgbuf sendBuf {888,this is message from queue\n};//将字符串内容写入到888类型的数据中这里的888类型需要与读取的类型数据一致struct msgbuf readBuf;msgId msgget(1234,IPC_CREAT|0777);if(msgId -1){printf(create queue failed\n);}msgsnd(msgId,sendBuf,strlen(sendBuf.mtext),0);//将结构体内容写入到1234消息队列中msgrcv(msgId,readBuf,sizeof(readBuf.mtext),999,0);//写入之后从队列中获取999类型的数据并存放到结构体的mtext中如果队列中未出现999类型的数据则程序阻塞在这里这里的999需要与写入队列类型数据一致printf(return form queue:%s\n,readBuf.mtext);return 0; }运行get.c创建并打开键值为1234的消息队列但此时表现为堵塞状态因为队列里没有888类型的数据 运行send.c创建并打开键值为1234的消息队列往队列里写入888类型的数据此时接收端会接受到写入端写入消息队列的数据并将其读取同时让接收端往队列里写入999类型的数据让写入段接受999类型的数据并读取
http://www.dnsts.com.cn/news/24704.html

相关文章:

  • 凡科网站怎么做链接头像logo江苏专业做网站
  • 用ps做网站主页制作一个网站需要什么
  • 做网站保证效果做网站的
  • 最好的建设网站网站开发后如何维护
  • 网站引导页动态效果怎么做川畅科技网站设计
  • 专业制作网站公司做电子请帖网站有哪些
  • 刷leetcode对网站开发有用吗常见的o2o平台有哪些
  • 自建网站需要备案吗模板和网站的区别
  • 怎么在自己做的网站上发视频教程中国建材人才网
  • 商丘网站公司优化公司内部流程
  • 学生求职网站的需求分析怎么做网页微信版登录
  • 邮箱网站怎么做装修公司网站源码php
  • 北京做网站公司电话seo软文推广工具
  • 扬州外贸网站seowordpress博客头图怎么改
  • 医院网站建设 费用做暧暧视频免费视频中国网站
  • 一个简单的网站怎么做的太原网站公司
  • 网网站设计网网站构建培训
  • 单位网站设计流程步骤网站建设需要的客户资料
  • 一般的域名可以做彩票网站吗电商在线设计网站
  • 建网站需要多少钱和什么条件微网站开发素材
  • 网站安全性怎么做门户网站建设内容
  • 做网站端口内容无法替换wordpress采集新浪博客
  • 建设电影网站数据库脚本wordpress 官网主题
  • 平台如何制作网站网站建设工作室发展
  • 苏州网站建设规划最近一周的热点新闻
  • 贵阳网站建设会计专业的简历制作
  • 安徽网站优化价格咨询重庆市建设政务中心网站
  • 物流企业网站织梦模板域名注册网站
  • 权威的赣州网站建设wordpress文章衔接出错
  • 大型购物网站开发网站建设的重要性意义与价值