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

【IO】共享内存、信息量集

1> 使用已经封装好的信号量数组,实现三个进程的同步执行,进程1打印A、进程2打印B,进程3打印C,最终效果是:

ABCABCABCABCABC ...

创建三个.c文件,内容基本一致,只有循环内和删除模块略微不同。

联合编译后,输入1,1,0。

#include <myhead.h>
#include "mysem.h"
#define PAGE_ZISE 4096
int main(int argc, const char *argv[])
{//1.1创建或打开一个信号量数组int semid=sem_create(3);if(semid==-1){return -1;}//1.创建key值key_t key=ftok("/",'m');if(key==-1){perror("key error");return -1;}printf("key =%d\n",key);//2.通过key值创建一个共享内存int shmid=shmget(key,PAGE_ZISE,IPC_CREAT|0664);if(shmid == -1){perror("shmget error");return -1;}//3.将共享内存映射到程序中char *addr=(char *)shmat(shmid,NULL,0);printf("addr=%p\n",addr);//4.向共享内存中放入数据while(1){//2.2 P操作,申请0号灯资源P(semid,0);printf("A\n");sleep(1);V(semid,1);}//断开与共享内存的连接shmdt(addr);//删除共享内存if(shmctl(shmid,IPC_RMID,NULL)==-1){perror("shmctl error");return -1;}//4.4sem_del(semid);return 0;
}

2> 将课堂代码熟练敲两遍

3> 思维导图

4> 牛客网

http://www.xdnf.cn/news/20108.html

相关文章:

  • 【已更新文章+代码】2025数学建模国赛B题思路代码文章高教社杯全国大学生数学建模-碳化硅外延层厚度的确定
  • 《设计模式之禅》笔记摘录 - 19.备忘录模式
  • 新增MCP工具管理,AI对话节点新增工具设置,支持对接企业微信机器人,MaxKB v2.1.0版本发布
  • 理解进程栈内存的使用
  • 嵌入式第四十六天(51单片机)
  • git提交代码
  • React笔记_组件之间进行数据传递
  • 只会git push?——git团队协作进阶
  • RAG(检索增强生成)-篇一
  • Linux-xargs-seq-tr-uniq-sort
  • Oracle 数据库使用事务确保数据的安全
  • 实现自己的AI视频监控系统-第三章-信息的推送与共享4
  • 如何在SpringBoot项目中优雅的连接多台Redis
  • vue3的 三种插槽 匿名插槽,具名插槽,作用域插槽
  • 无需Python:Shell脚本如何成为你的自动化爬虫引擎?
  • Dubbo消费者无法找到提供者问题分析和处理
  • 记录SSL部署,链路不完整问题
  • Eclipse 常用搜索功能汇总
  • 连接MCP,Lighthouse MCP Server和CNB MCP Server应用
  • 解密注意力计算的并行机制:从多头并张量操作到CUDA内核优化
  • 25年Docker镜像无法下载的四种对策
  • 【Spring Cloud Alibaba】Sentinel(一)
  • 【LeetCode数据结构】设计循环队列
  • Java 并发编程解析:死锁成因、可重入锁与解决方案
  • 人工智能机器学习——逻辑回归
  • go 初始化组件最佳实践
  • ai生成ppt工具有哪些?10款主流AI生成PPT工具盘点
  • 中州养老:角色管理的角色分页查询
  • 渗透测试与网络安全审计的关系
  • (论文速读)Navigation World Models: 让机器人像人类一样想象和规划导航路径