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

ppt下载模板免费网站手机版网站做一下多少钱

ppt下载模板免费网站,手机版网站做一下多少钱,免费网站推广的方法,莆田建设项目环境网站一、消息队列的原理 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型#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.laogonggong.com/news/128758.html

相关文章:

  • 电影网站建设方案wordpress整站安装
  • 网站开发 网页制作邢台路桥建设总公司没有网站吗
  • 网站设计模板代码公司网站打开显示建设中
  • 长兴县城乡建设局网站互联网平台是什么意思
  • 凯里网站建设哪家好php做网站标题加链接
  • 一家做公司点评网站做水暖的网站
  • 厦门网站制作套餐国际 网站制作公司
  • 深圳做app网站设计门户网站建设推广
  • 方山网站建设网站后台psd
  • 个人摄影作品网站厦门营销型网站
  • html做分页的网站怎么用WordPress搜索别人
  • 太原 招聘 网站建设 技术经理重庆哪里可以做网站
  • 龙岩网上通缉犯名单南昌seo服务
  • 昆明找工作哪个网站好战略咨询
  • 做物流的用什么网站配货网站制作方案策划书
  • 网站能调用一些字体有什么好的免费网站做教育宣传
  • 手机网站课程东莞网站视频
  • 建一个信息网站多少钱北京企业网站怎么建设
  • 江西哪家网站建设公司好内网怎么做网站
  • 网站运营网站建设怎么样自己做网站赚钱年入40万
  • 福田网站 建设深圳信科格尔木建设局网站
  • 泗洪做网站公司柳州网站建设11
  • 沈阳建设局网站首页网页素材提取
  • 哈尔滨模板网站建设国内常用的crm系统
  • 番禺网站开发系统广告设计是做什么的
  • 建设网站需要买什么网站建设简单吗
  • 湖州北京网站建设怎么制作网页投票软件
  • 行业协会网站建设做网络推广的网站有哪些
  • 网站ico在后台哪里找到深圳建设工程交易网站宝安
  • 如何做下载网站赚钱吗做淘宝客注册网站好做吗