c#消息队列实际应用(redis是数据库还是中间件)

由于最近的工作中需要用到消息队列,顺带花时间整理了一下。 C语言消息队列,有三种,一种是SystemVipc,第二种的是posixipc,第三种是自己用代码实现的消息队列。 SystemVipc和Posixipc也叫进程间通信。(IPC的全称是Inter-processComminication,就是进程间通信)。 进程间通信分为三个内容,分别是:消息队列、信号量和共享内存。 SystemVIPC…

因为近期的工作上必须使用消息队列,顺便花时间梳理了一下。

C语言消息队列,有三种,一种是System V ipc,第二种的是posix ipc,第三种是自身用编码完成的消息队列。

System V ipc 和Posix ipc 也叫进程间通信。(IPC的全名是Inter-process Comminication,便是进程间通信)。

进程间通信分成三个內容,分别是:消息队列、信号量和共享内存。

System V IPC也可分为下列三种种类:
System V 消息队列
System V 信号量
System V 共享内存区C语言消息队列之System V 消息队列

System V IPC 三种类型

文中将关键详细介绍System V 消息队列

在System V IPC中,System v ipc中有一个至关重要的类别是key_t,在msget、semget、shmget函数实际操作里都必须运用这一种类是主要参数。

key_t的值由函数ftok来转化成,函数ftok把一个[已具有的路径名,pathname]和一个[整数金额标志符,id]变换称一个key_t值, 称之为IPC键。

key_t ftok(const char *pathname, int proj_id);

System V 消息队列

消息队列函数由msgget、msgctl、msgsnd、msgrcv四个函数构成。

1.msgget函数原型

C语言消息队列之System V 消息队列

msgget函数原型

假如用msgget建立了一个新的消息队列目标时,则msqid_ds构造成员变量的值设定如下所示:

msg_qnum、msg_lspid、msg_lrpid、 msg_stime、msg_rtime设定为0。

msg_ctime设置为现在时间。

msg_qbytes设置成系统软件的限定值。

msgflg的读写能力管理权限载入msg_perm.mode中。

msg_perm构造的uid和cuid组员被设置成现阶段过程的合理客户ID,gid和cuid组员被设置成现阶段过程的合理组ID。

2.msgctl函数原型

C语言消息队列之System V 消息队列

msgctl函数原型

3.msgsnd函数原型

C语言消息队列之System V 消息队列

msgsnd函数原型

msgsnd()为阻塞函数,当消息队列容积满或信息数量满会阻塞。消息队列已被删掉,则回到EIDRM不正确;被信号中断回到E_INTR不正确。

假如设定IPC_NOWAIT消息队列满或数量满的时候会回到-1,而且置EAGAIN不正确。

msgsnd()消除阻塞的前提有下列三个标准:

① 不符合消息队列满或数量满2个标准,即消息队列中有容下该信息的室内空间。

② msqid意味着的消息队列被删掉。

③ 启用msgsnd函数的过程被信号中断。

4.msgrcv函数原型

C语言消息队列之System V 消息队列

msgrcv函数原型

msgrcv()消除阻塞的前提有下列三个:

① 消息队列中拥有符合条件的信息。

② msqid意味着的消息队列被删掉。

③ 启用msgrcv()的过程被信号中断。

消息队列应用程序流程案例

msgrcv.c

#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<stdio.h>
struct msgbuf
{
    long type;
    int groupid;
    int appid;
    char buf[1024];
};
int main()
{
    int msgid;
    msgid=msgget(0x1000,IPC_CREAT | 0777);
    struct msgbuf mb;
    msgrcv(msgid,&mb,sizeof(struct msgbuf)-sizeof(long),1,0);
    printf(\"type: %dtgroupid: %dtappid: %dn\", mb.type,mb.groupid, mb.appid);
    puts(mb.buf);
}

msgsnd.c

#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<stdio.h>

struct msgbuf
{
    long type;//种类
    int groupid;
    int appid;
    char buf[1024];
};

int main()
{
    int msgid;
    msgid=msgget(0x1000,IPC_CREAT | 0777);
    struct msgbuf mb={1,1,1,\"hello world\"};
    int ret;
    ret=msgsnd(msgid,&mb,sizeof(struct msgbuf)-sizeof(long),0);
    //这儿的长短不包括种类的尺寸
}

检测

C语言消息队列之System V 消息队列

在运作./msgsnd程序流程后,应用ipcs命令,可查询到消息队列的情况信息内容。如下图,表明有一条信息。

分阶段实行和查询消息队列信息内容

在控制台实行./msgsnd &。C语言消息队列之System V 消息队列

推送信息

ipcs查询Message Queues信息内容。C语言消息队列之System V 消息队列

查看ipcs

实行./msgrcv,接受消息队列信息内容。C语言消息队列之System V 消息队列

接受信息

ipcs查询Message Queues信息内容。信息已被接受。C语言消息队列之System V 消息队列

查看ipcs

最终是对POSIX和System V的一个发源详细介绍

POSIX

POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发设计的一簇规范。该标准是根据目前的UNIX 实践活动和工作经验,叙述了电脑操作系统的启用服务项目插口,用以确保定编的程序可以在源码一级上在多种多样电脑操作系统上移殖运作。它是在1980 年初期一个UNIX 用户组(usr/group)的前期工作中的基本上获得的。该UNIX 用户组原先尝试将AT&T 的系统软件V 和Berkeley CSRG的BSD 系统的启用插口中间的差别再次调合集成化,进而于1984 年出现了/usr/group 规范。1985 年,IEEE电脑操作系统技术性联合会规范工作组联合会(TCOS-SS)逐渐在ANSI 的大力支持下责令IEEE 规范联合会制订相关程序流程源码可扩展性电脑操作系统服务项目插口宣布规范。到了1986 年4 月,IEEE 就制订出了使用规范。第一个宣布规范是在1988 年9 月份准许的(IEEE 1003.1-1988),也既之后常常提起的POSIX.1 规范。

System V

System V, 以前也被称作 AT&T System V,是Unix电脑操作系统诸多游戏版本中的一支。它初由 AT&T 开发设计,在1983年第一次公布。一共发售了4个 System V 的关键版本号:版本1、2、3 和 4。System V Release 4,或是称之为SVR4,是获得成功的版本号,变成一些UNIX一同特点的根源,例如 ”SysV 复位脚本制作“ (/etc/init.d),用于自动控制系统运行和关掉,System V Interface Definition (SVID) 是一个System V 怎样工作的标准定义。

AT&T 售卖运作System V的专用硬件配置,但很多(也许是大部分)顾客在其上运作一个转卖的版本号,这一版本号根据 AT&T 的完成表明。时兴的SysV 衍化版本号包含 Dell SVR4 和 Bull SVR4。现如今普遍采用的 System V 版本号是 SCO OpenServer,根据 System V Release 3,及其SUN Solaris 和 SCO UnixWare,都根据 System V Release 4。

System V 是 AT&T 的第一个商业服务UNIX版本号(UNIX System III)的加强。传统式上,System V 被看成是二种UNIX”口味”之一(另一个是 BSD)。殊不知,伴随着一些并不根据这二者编码的UNIX完成的发生,例如 Linux 和 QNX, 这一梳理不会再精确,但不论怎样,像POSIX那样的标准化勤奋一直在尝试降低各种各样完成中间的不一样。

就先去这儿,后边再讲一下Posix线程池和自身用编码完成的线程池。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年4月28日 下午1:48
下一篇 2022年4月28日 下午1:49

相关推荐

  • 个人网络营销的方法有哪些,我国的网络营销发展现状

    人与人之间的联系是建立在诚信的基础上。有了诚信这座桥梁,你可以与人合作经营,你可以获得别人的帮助,更可以带领人发家致富,诚信在人与人之间至关重要。 网络营销发展离不开诚信,有诚信无疑之中就等于拥有无形的财富。 一个经典的事例:“某理财平台,营销人员向用户推广理财产品的时候,他不会为了获得丰厚的奖金而盲目向用户推荐高收入高风险的理财产品。他这样做,用户虽然不会多赚钱,但是这个用户下次会继续找到这个营…

    2022年8月26日
    460
  • 网络营销好做吗(网络推广的利弊分析)

    网络营销已然成为一种企业推广的必要营销手段,具有传统手段没有办法与之相比的优势。如果企业向进一步扩大业务规模,网络营销是一个必然的选择。网络营销有着受众非常广泛,风险低,投入产出比高的优势。 一、没有时间限制 网络营销没有时间限制,这一点可以给企业带来了极大的便利。当一个企业有任何活动或必要的推广时,它不需要花费太多时间。只要确定好一个时间段,你就不必考虑太多的因素。 二、无地域限制 传统营销方法…

    2022年5月20日
    940
  • 京东换货怎么弄(京东换货流程操作)

    一、售后触发的节点 对于电商平台来说,不同的运营模式、特殊的商品类目等都会有对应的售后策略,比如虚拟商品、生鲜类目、定制商品、特价商品基本上是不支持换货的。 那常规商品,用户是可以在订单状态为“待收货”、“交易成功”下申请换货售后,如图1所示。 图1:不同售后类型触发起节点 但是大家要注意一点,当订单未满足物流签收状态条件时,换货售后的入口是不显示出来,因此需要满足一个条件:订单物流状态必须是已签…

    2022年5月9日
    2040
  • 新百伦999正品多少钱一双(实测证明这款鞋子绝对百搭又耐穿)

    这次体验的是NewBalance999爆红鞋款。打开快递外包装牛皮纸盒后,内部是NewBalance经典款的三色复古风的鞋盒包装,无疑是众多N字鞋粉心中的经典!如果你每天吃饭,食之无味?那你就需要一双这样的N字999!一年四季,N字999搭配都是ok的,N字999就是那么的百搭和耐穿! 亮点与细节 NewBalance999 N字999鞋麂皮鞋面,不同深浅的灰色覆盖鞋身,翠花绿皮革部分作为细节的点…

    2022年9月27日
    6120
  • 老人智能手机哪款好,这四款好用又不贵绝对是首选

    最近有网友给小编留言,说最近打算给父母买台手机,但是不知道该怎么选。当我看到这个问题的时候,陷入了深思,这确实是一个很难抉择的问题。毕竟如果父母年纪过大,让他们学习使用智能手机的成本就会增加,而且还有一个问题,那就是选4G还是5G。虽然说买新不买旧,但是对于父母而言,这些真的是刚需吗?因此,下面帮大家盘点四款适合父母使用的机型。 Redmi10x4G 说实话,对于老人来说5G网络还真不是刚需,在家…

    2022年10月5日
    480
  • 品牌推广是做什么的,品牌推广的目的和意义

    在这个互联网的时代下,很多企业都开始走上全网营销这条道路了,但是有很多企业不知道怎么做全网营销,不知道怎么推广自己的品牌,获取最大的利润。。其实品牌推广的目的是实现品牌营销,增加利润额。而企业品牌推广对于企业的发展与壮大具有关键性的影响因素。在企业与企业竞争由服务与产品过渡到品牌的竞争,品牌推广决定了企业的强弱。 第一,建设自己的官方网站。 在品牌推广过程中,建设自己公司的官网其实是一步准备工作。…

    2022年6月29日
    560
  • 华硕台式机怎么样(华硕台式机配置及评测)

    随着教育现代化的发展,新型的智能化教学设备正逐渐走向各地校园,用电脑连接多媒体大屏幕的授课方式不仅能有效提高教学质量,还能用生动有趣的多媒体课程激发孩子们学习知识的激情。华硕商用D425MC台式机选配AMD®Ryzen™处理器,专为更高效率而生,课堂教学行云流水;20升尺寸机箱设计,简约大方,彰显华硕品牌魅力;丰富的端口设计,从容应对各种教学环境,是课堂多媒体教学设备的上佳选择。 疾速性能不容等待…

    2022年10月25日
    430
  • 最好的cpu是什么型号(目前性能最好的cpu)

    cpu作为电脑的“大脑”,代表着电脑的演算能力和反应速度,无论是工作还是玩游戏,cpu的性能都起了关键作用。最近国外知名的PC游戏网站PCGAMER根据今年各品牌CPU的实际体验,评选出了六款最佳的CPU。英特尔经历了几代的失意后,在今年重回巅峰。 玩游戏最好的CPU——英特尔酷睿i5-12600K 英特尔的第12代AlderLake处理器是英特尔的重要回归。特别是酷睿i5-12600K,它不仅提…

    2022年5月6日
    1100
  • 苹果手机如何备份照片,备份iphone全部数据教程

    目前随着微信用户量非常大,而且随着我们对手机的要求也越来越多,很多人都需要两部手机,一台没电了,就换另一台手机玩。那么微信号唯独只能在一台设备上登陆,另一台手机登陆了会把上一台手机逼迫下线,而且即使登陆后聊天记录就没有了,那么下面就教大家一个简单的小知识即可快速转移聊天记录到另一台手机啦。我们来看一下步骤吧。 迁移方法: 一、打开微信,点击【我】功能选项,找到【设置】 二、在设置界面里面找到【通用…

    2022年6月12日
    690
  • 怎样给移动硬盘文件加密(移动硬盘加密最简单的方法)

    我的工作原因,有非常大量的使用移动硬盘的需求,有时候项目组之间相互拷贝数据,有时候需要往返闪送给同城甲方拷贝文件,有时候领导同事需要数据拷贝,那就会出现以下几种文件加密需求: 1.最高需求,我希望对方只能打开某一个开放的磁盘,且看不到我想隐藏的磁盘; 2.次一级需求,某一个磁盘,或是某一个文件夹是别人看不见的。 3.再次一级的需求,我希望某一个磁盘,或是某一个文件夹是别人看见但是无法打开的。 在长…

    2022年5月10日
    1130

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信