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

大冶网站建设博客用来做微网站

大冶网站建设,博客用来做微网站,做网站的例子,黄桃图片友情链接一、消息队列的原理 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型#xff0c;接收进程可以独立接收含有不同类型值得数据库。 消息实际上是一个数据块#xff0c;这个数据块是一个结构体#xff0c;结构体由自己命名。消…一、消息队列的原理 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型接收进程可以独立接收含有不同类型值得数据库。 消息实际上是一个数据块这个数据块是一个结构体结构体由自己命名。消息的第一个成员是固定的它是一个长整型它代表消息的类型后面的成员是自己定义的数据。一开始消息队列是空的可以由一个进程a向消息队列中发送消息但是如果由另外一个进程b或c去接收消息队列中的消息就会发生阻塞。当一个进程往消息队列中发送消息时只要这个消息队列没有满就可以添加进去如果消息队列满了就会发生阻塞。当一个进程去接收消息队列中的消息时可以指定消息的类型当消息队列中没有所指定的消息的类型进程就会发生阻塞。 1.消息队列与有名管道 消息队列和有名管道有许多相似之处 相同点 使用消息队列并没有解决我们在使用有名管道时遇到的一些问题比如管道满时的阻塞问题在消息队列中同样存在消息队列满时也会发生阻塞。 不同点 消息队列相比较管道来说消息队列少了在打开和关闭管道方面的复杂性。消息队列提供了一种在两个不相关的进程之间传递数据的相当简单且有效的方法。与有名管道相比消息队列独立于发送和接收进程而存在这消除了在同步有名管道的打开和关闭时会产生的一些困难。 2.消息队列得优缺点 1优点 ①可以通过发送消息来几乎完全避免有名管道得同步和阻塞问题。 ②可以用一些方法来提前查看紧急消息。 缺点 与管道一样每个数据块都有一个最大长度得限制系统中所有队列所包含得全部数据块得总长度也有一个上限。Linux系统有两个宏定义MSGMAX和MSGMNB它们以字节为单位分别定义了一条消息的最大长度和一个队列的最大长度。其它系统中这些宏定义可能会不一样或者不存在。 3.消息队列的生命周期 消息队列的生命周期并不随进程的结束而结束是随内核持续的。调用消息队列相关的内核的接口内核帮忙创建只要自己不主动去删除就会一直存在即便进程已经结束它们也一直会在内核中被维护着。想用的时候还可以继续用在程序最后不使用的情况下把它删除。删除的方法有3种关机、调用相关函数删除和在命令行手动删除。 信号量、共享内存的生命周期也是如此。 二、消息队列相关接口函数 1.msgget() 创建消息队列 创建或者获取一个消息队列的ID int msgget(key_t key, int msqflg); 参数解释 key“房间密码” msqflg创建消息队列的方式同时设置权限 返回值成功返回消息队列id失败返回 -1 权限的设置规则 IPC_CREAT可以单独使用如果消息队列不存在则重新开辟函数返回值是新开辟的消息队列的ID如果已经存在则沿用已有的消息队列函数返回值是已有的消息队列的ID。 IPC_EXCL无法单独使用要配合IPC_CREAT使用即 IPC_CREAT | IPC_EXCL表示如果消息队列不存在则重新开辟函数返回值是新开辟的消息队列ID如果已经存在则报错。 IPC_CREAT | IPC_EXCL | 0664开辟消息队列的同时设置消息队列的访问权限 2.msgsnd() 向消息队列中添加一条消息 该函数的作用是向消息队列中添加一条消息。 int msgsnd(int msqid, const void *msqp, size_t msqsz, int msqflg);参数解释 msgid消息队列ID即msgget函数的返回值 msgp 消息缓冲区的地址也就是你要向消息队列中添加的消息需要满足一定的格式。消息格式如下 struct msgbuf { long mtype; // 消息类型 必须大于0 char mtext[1]; // 消息数据 //结构体的最后一个成员是数组该数组也被称为柔性数组即数组大小可变 }; msgsz指定mtext中有效数据的长度。这里的消息长度指的是上面这个结构体中buf成员所占字节数。 msgflag表示发送消息的方式。一般设置为0。也可以设置IPC_NOWAIT。可选值及其含义如下 返回值成功返回0失败返回-1 3.msgrcv())接收一条消息 该函数的作用是从消息队列的队头取出一条消息。 ssize_t msgrcv(int msqid, void *msgp, size_t msqsz, long msqtyp, int msqflg); 参数解释 msgid消息队列id msgp输出型参数表示消息缓冲区的地址。也就是你要把取出来的消息放在哪同样需要使用指定格式。数据格式和msgsnd函数所要添加的消息的格式一样如下 struct msgbuf { long mtype; // 消息类型 必须大于0 char mtext[1]; // 消息数据 //结构体的最后一个成员是数组该数组也被称为柔性数组即数组大小可变 }; size用于存放接收到的消息数据的缓冲区大小。 msgtype选择想要取出的消息类型虽然叫做消息队列但是不一定就是取出队头元素也可以是取出具有相同消息类型中的第一个消息。主要分为以下三种情况 msgtype 0的具体解释假设消息队列里的消息类型有 1、3、4、5 四种类型的消息如果msgtype -4绝对值是4那就需要取出消息类型小于等于4的所有消息因此取出消息的消息类型必须是1、3、4类型。 msgflag表示接收消息的方式。一般设置为0也可以设置IPC_NOWAIT等可选值如下 返回值 msgrcv()成功返回mtext中接收到的消息数据的长度 失败返回-1。 4.msgctl()一般用来销毁消息队列 该函数的作用是控制消息队列一般用来销毁消息队列。 int msgctl(int msqid, int cmd, struct msqid_ds *buf); 参数解释 msgid消息队列id cmd对消息队列执行的具体操作如拷贝、查询、销毁等。可选值如下 buf消息队列缓冲区。比如 cmd 为IPC_STAT时会把消息队列的相关信息拷贝到该缓冲区中。 返回值msgctl()成功返回0失败返回-1
http://www.hkea.cn/news/14422353/

相关文章:

  • wordpress自动保存编辑器图片大连seo顾问
  • 好看的手机网站推荐慈溪市建设局网站表格下载
  • 做一个国外的网站wordpress清理主题
  • 网站设计方案案例功能型网站多少钱
  • 麻章网站建设公司山东东方路桥建设总公司官方网站
  • 合肥响应式网站建设方案常州制作企业网站
  • 长春网站公司有哪些内容红酒网页设计图片
  • 宁波营销型网站建设首选wordpress站内信
  • 山西城乡与住房建设厅网站美橙互联 网站备案
  • 苏州做网站的公司有哪些展示类网站cms
  • 网站建设公司如何盈利wordpress 安装要求
  • 做购物网站的业务老牌网站建设
  • 扬州做阿里巴巴的公司网站优化seo搜索排名
  • 企业网站建设需要考虑内容淄博临淄网站建设
  • 某公司人事管理网站开发网站广告接入
  • 武进做网站的公司个人网站 费用
  • 广州 创意的网站设计做菠菜网站判多久
  • 网站源码怎么写山西企业模板建站信息
  • 王晴儿网站建设玩具网站建设
  • 保健品网站可以做网站微信文章导入wordpress
  • 菜鸟教程网站是怎么做的吉林电商网站建设
  • 网站建设产品中心重庆市建设考试报名网站
  • 外贸网站建设如何做推广运营是做什么的
  • 公司网站建设电话南通五建宏业建设工程有限公司网站
  • 网站开发外包平台西宁做网站的好公司
  • 深圳网站建设网站设计软文推广怎么建设两个大淘客网站
  • 怎样才能建设只是于自己的网站中山百度首页推广
  • 广州海珠区赤岗 新港网站建设公司高稳定性的网站设计制作
  • wordpress刷量插件网站页脚优化怎么做
  • 农林网站建设公司上海营销型网站制作