zoukankan      html  css  js  c++  java
  • 消息队列编程

    消息队列:就是一个消息的链表。而一条消息则可看作一个记录,具有特定的格式。进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息 

    发送消息队列:

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

    struct msgt
    {
    long msgtype;
    char msgtext[1024];

    };
    int msg_type;
    char str[256];
    struct msgt msgs;
    void main()
    {
    int msqid;


    //创建消息类型
    msqid= msgget(1024, IPC_CREAT);

    while(1)
    {
    printf("please input message type,0 for quit!");
    //获取消息类型
    scanf("%d",&msg_type);


    //如果发送消息类型为0,退出循环
    if(msg_type==0)
    break;

    //获取消息
    printf("please input message content ");
    scanf("%s",&str);

    msgs.msgtype=msg_type;
    strcpy(msg.msgtext,str);


    //发送消息

    msgsnd( msqid, &msgs,sizeof(struct msgt), 0);

    }


    //删除消息队列

    msgctl( msqid, IPC_RMID, 0)


    }

    接收消息队列:

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

    int msqid=0;
    struct msgt
    {
    long msgtype;
    char msgtext[1024];

    };

    void childprocess()
    {
    struct msgt msgs;

    while(1)

    {
    //接收消息队列
    msgrcv( msqid, &msgs,sizeof(struct msgt),0,0);

    //打印消息队列中的数据
    printf("msg text: %s ",msgs.msgtext);

    }
    return;
    }


    void main()
    {

    int i;
    //打开消息队列
    msqid= msgget(1024, IPC_CREAT);


    //创建3个子进程,处理速度加快3个进程同时处理
    for(i=o;i<3;i++)
    {
    cpid=fork();
    if(cpid<0)
    printf("creat child process error ");
    else if(cpid==0)
    childprocess();
    }
    }

     

  • 相关阅读:
    js 一维数组转二维数组
    mongoose 系列设置
    手写系列
    设置未登录的导航守卫
    vue 添加设置别名文件
    移动端视口标签
    小程序跳转页面怎么携带数据
    data数据复杂时怎么setData
    小程序注意的点 text标签中一定 不要换行
    小程序用户登录
  • 原文地址:https://www.cnblogs.com/1932238825qq/p/7367982.html
Copyright © 2011-2022 走看看