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

西安做网站的公司电话国内的跨境电商平台有哪些

西安做网站的公司电话,国内的跨境电商平台有哪些,网络域名综合查询,怎样做集装箱网站消息队列是一种进程间通信(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://www.dtcms.com/a/498498.html

相关文章:

  • 网站建设新的开始北京网页设计公司
  • 空间设计网站南城网站建设公司案例
  • 世界上做的最好的前端网站企业网站建立策划书
  • 做网站如何适应分辨率中企动力青岛分公司
  • 外国建设小网站赚钱app定制网站建设应有尽有
  • 免费的企业黄页网站永久免费网站建设xiu021
  • 网站开发需求 模板seo技术外包 乐云践新专家
  • 如何利用国外分类网站开发客户呼市网站开发
  • 网站主机名是什么邢台交友吧
  • 房地产网站建设方案标志设计分析
  • 阿里云主机怎么做两个网站网站注册怎么做
  • 祁县网站建设凌云县城乡建设局网站
  • wordpress 修改后台地址福州seo博客
  • 古风网站建设wordpress文章页版权
  • 做摄影哪个网站专业搜索引擎seo公司
  • 推荐几个做网站比较好的公司网站开发的比较
  • 彩票网站维护会跑路吗大连做网站哪家便宜
  • 手机网站前端设计jsp做网站实例
  • 一级做爰片a视频网站我做的网站手机上不了
  • 自己做微网站东莞网站建设是什么
  • 有限责任公司和有限公司有啥区别seo外链是什么
  • 子目录创建网站基于jsp的网站开发开题报告
  • 开公司如何做网站推广页面网站拥有权
  • WordPress mvc插件宁波优化系统
  • 网站的信息容量电商代运营一般收多少服务费
  • 网站营销建设策划案闵行做网站的公司
  • 网站中有哪些标签需要优化在线做家装设计的网站
  • 恩阳建设局网站兰州专业网站建设公司哪家好
  • 遵义网站建设凤凰军事新闻头条
  • 嘉兴网站排名优化报价wordpress文章列表分页插件