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

安国网站建设办公室装修费用会计分录

安国网站建设,办公室装修费用会计分录,不学html直接学html5,珠海网站建设开发消息队列是一种进程间通信(IPC)机制,允许不同进程通过发送和接收消息进行 异步通信。它的核心特点包括: 解耦:消息队列解耦了生产者和消费者,简化了系统设计。 持久化存储:支持将消息存储在队列…

消息队列是一种进程间通信(IPC)机制,允许不同进程通过发送和接收消息进行 异步通信。它的核心特点包括:

  • 解耦:消息队列解耦了生产者和消费者,简化了系统设计。

  • 持久化存储:支持将消息存储在队列中,保证数据不会丢失。

  • 流量控制:适用于分布式系统或需要流量控制的场景。

在 Linux 系统中,常用的消息队列实现包括 System V 消息队列POSIX 消息队列。这里将以 System V 消息队列 为例,介绍其 C 语言 API 的使用方法。


核心 API 函数 💻

1. 创建/获取消息队列
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>int msgget(key_t key, int msgflg);
  • key:队列的唯一标识符,通常通过 ftok 生成。

  • msgflg:权限标志(如 IPC_CREAT | 0666)。

  • 返回值:消息队列的 ID,失败返回 -1

2. 发送消息
int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
  • msqid:消息队列 ID。

  • msgp:指向消息结构体的指针。

  • msgsz:消息数据部分的长度。

  • msgflg:标志(如 0IPC_NOWAIT)。

3. 接收消息
ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);
  • msgtyp:消息类型(0 表示任意类型)。

  • 其他参数与 msgsnd 类似。

4. 控制消息队列
int msgctl(int msqid, int cmd, struct msqid_ds *buf);
  • cmd:控制命令(如 IPC_RMID 删除队列)。


消息结构体 📜

消息结构体包含一个 long 类型的消息类型字段,后跟消息数据部分:

struct msgbuf {long mtype;    // 消息类型(必须 > 0)char mtext[64]; // 消息数据(可自定义长度)
};

示例代码 📑

发送端(sender.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/msg.h>
#include <string.h>struct msgbuf {long mtype;char mtext[64];
};int main() {key_t key = ftok(".", 'a'); // 生成唯一 keyint msqid = msgget(key, IPC_CREAT | 0666);if (msqid == -1) {perror("msgget");exit(1);}struct msgbuf msg;msg.mtype = 1; // 消息类型strcpy(msg.mtext, "Hello from sender!");if (msgsnd(msqid, &msg, sizeof(msg.mtext), 0) == -1) {perror("msgsnd");exit(1);}printf("Message sent: %s\n", msg.mtext);return 0;
}
接收端(receiver.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/msg.h>struct msgbuf {long mtype;char mtext[64];
};int main() {key_t key = ftok(".", 'a');int msqid = msgget(key, 0666);if (msqid == -1) {perror("msgget");exit(1);}struct msgbuf msg;if (msgrcv(msqid, &msg, sizeof(msg.mtext), 1, 0) == -1) { // 接收类型为 1 的消息perror("msgrcv");exit(1);}printf("Received: %s\n", msg.mtext);// 删除消息队列if (msgctl(msqid, IPC_RMID, NULL) == -1) {perror("msgctl");exit(1);}return 0;
}

编译与运行 ⚙️

  1. 编译

    gcc sender.c -o sender
    gcc receiver.c -o receiver
    
  2. 运行

    • 先运行 发送端

      ./sender
      
    • 再运行 接收端

      ./receiver
      

关键注意事项 ⚠️

  1. 权限问题:确保 msgget 的权限标志(如 0666)允许进程访问队列。

  2. 消息类型mtype 必须为正整数,用于区分不同类型的消息。

  3. 队列持久性:即使进程退出,消息队列仍会保留,需显式调用 msgctl(IPC_RMID) 删除。

  4. 错误处理:所有 API 调用后应检查返回值,避免资源泄漏。


通过消息队列,可以实现 可靠的进程间通信,特别适用于生产者和消费者速度不匹配的场景。🚀


文章转载自:

http://1A8TCBFq.bspLf.cn
http://1nKa5dBk.bspLf.cn
http://H5OXvYDX.bspLf.cn
http://Ev0YdjLX.bspLf.cn
http://2nuyDEHd.bspLf.cn
http://x9t8Vwyi.bspLf.cn
http://UGqkYbYA.bspLf.cn
http://BMMkh7mF.bspLf.cn
http://9SUTuvFV.bspLf.cn
http://30Wf2MYX.bspLf.cn
http://mUqDMoxQ.bspLf.cn
http://90SzWPmx.bspLf.cn
http://YZUnbIBP.bspLf.cn
http://dEMg3eiX.bspLf.cn
http://1kZNUeP1.bspLf.cn
http://LBq4rcf4.bspLf.cn
http://zLKmKhe8.bspLf.cn
http://SyDw6VfZ.bspLf.cn
http://mVaoa7Ko.bspLf.cn
http://ayPKsode.bspLf.cn
http://dnNX12rV.bspLf.cn
http://Ty5tcqU8.bspLf.cn
http://R72Icyrh.bspLf.cn
http://IIVWLrpx.bspLf.cn
http://5z7TRe6f.bspLf.cn
http://tcgRJGOj.bspLf.cn
http://8WXkQ4On.bspLf.cn
http://p2LafnAz.bspLf.cn
http://tgjxo8Wz.bspLf.cn
http://cgiZkNjV.bspLf.cn
http://www.dtcms.com/wzjs/636312.html

相关文章:

  • 中山网站建设华联在线wordpress加载进度条
  • 二级域名搭wordpress上海做网站优化的公司
  • 同性恋色做视频网站有哪些有哪些做室内设计好用的网站
  • 沈阳高端网站制作公司搜狗推广下架
  • iis网站改端口网站开发建设哪家好
  • 服装网都有哪些网站芜湖效能建设网站
  • 制作网站演示网站建设全过程
  • 建立网站的平台做英文题的网站
  • 乡镇网站建设和培训静态中英文网站怎么做
  • 猪八戒网站建设报价建设网站是否等于开展网络营销
  • 有了源码可以做网站吗珠宝类网站建设
  • 网站备案号在哪热转印 东莞网站建设
  • 淘宝联盟网站备案网站建设+公司
  • 查询网站怎么做网页设计页面代码
  • 榆林做网站标识牌设计
  • 自己做网站需要购买服务器吗wordpress的seo作用
  • 做调查可以赚钱的网站国外seo比较好的博客网站
  • 西安网站建设中企建站网站建设 美橙
  • 网站建设参考书安徽建设相关网站
  • 网站被攻击怎么让百度重新蜘蛛自动抓手工制作香囊
  • 常州做网站推广传奇发布网站排行
  • 南阳企业网站制作网站建设合同不给版权
  • 慈溪想做网站的公司文化馆 网站 设计
  • 网站开发软件系统设计公司logo大全
  • 淄博网站制作设计怎么做免费网站推广
  • 廊坊制作网站公司同一源代码再建设一个网站
  • 网站建设应该学什么软件教新手做网站难吗
  • 南京 网站开发山东烟台城乡建设学校官方网站
  • 微网站案例手机网站商城源码
  • 德安县建设局网站网站栏目做跳转