5.11作业

 1:有一个隧道,全长5公里,有2列火车,全长200米,
                火车A时速 100公里每小时
                火车B时速 50公里每小时
                现在要求模拟火车反复通过隧道的场景(不可能2列火车都在隧道内运行

pthread_mutex_t mutex1;
pthread_mutex_t mutex2;
void *train2(void *arg)                  
{while(1){pthread_mutex_lock(&mutex2);int time2=(int)(5.4/50*60*60);printf("火车B%d秒通过\n",time2);sleep(time2/100);pthread_mutex_unlock(&mutex1);}
}
int main(int argc, const char *argv[])
{pthread_mutex_init(&mutex1,NULL);pthread_mutex_init(&mutex2,NULL);pthread_t id;pthread_create(&id,NULL,train2,NULL);pthread_detach(id);pthread_mutex_lock(&mutex2);while(1){pthread_mutex_lock(&mutex1);int time1=(int)(5.4/100*60*60);printf("火车A%d秒通过\n",time1);pthread_mutex_unlock(&mutex2);}return 0;
}

  2:有一个隧道,全长5公里,有3列火车,全长200米,
                火车A时速 100公里每小时
                火车B时速 50公里每小时
                火车c时速 25公里每小时
                现在要求 火车A先通过隧道,火车B再通过隧道,最后火车C通过隧道

pthread_mutex_t A;
pthread_mutex_t B;
pthread_mutex_t C;
void* trainA(void *str)
{while(1){pthread_mutex_lock(&A);printf("火车A进入\n");sleep(0.5);puts("火车A驶出");pthread_mutex_unlock(&B);}
}
void* trainB(void *str)
{while(1){pthread_mutex_lock(&B);printf("火车B进入\n");sleep(1);puts("火车B驶出");pthread_mutex_unlock(&C);}
}
void* trainC(void *str)
{while(1){pthread_mutex_lock(&C);printf("火车C进入\n");sleep(2);puts("火车C驶出");pthread_mutex_unlock(&A);}
}                                                            
int main(int argc, const char *argv[])
{pthread_mutex_init(&A,NULL);pthread_mutex_init(&B,NULL);pthread_mutex_init(&C,NULL);pthread_mutex_lock(&B);pthread_mutex_lock(&C);pthread_t idA;if(pthread_create(&idA,NULL,trainA,NULL) != 0){perror("pthread_create");return 1;}pthread_detach(idA);pthread_t idB;if(pthread_create(&idB,NULL,trainB,NULL) != 0){perror("pthread_create");return 1;}pthread_detach(idB);pthread_t idC;if(pthread_create(&idC,NULL,trainC,NULL) != 0){perror("pthread_create");return 1;}pthread_detach(idC);while(1);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/11048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024中国(重庆)机器人展览会8月举办

2024中国(重庆)机器人展览会8月举办 邀请函 主办单位: 中国航空学会 重庆市南岸区人民政府 招商执行单位: 重庆港华展览有限公司 2024中国重庆机器人展会将汇聚机器人全产业链知名企业,世界科技领先的生产制造企业与来自多个国家和地区…

蓝桥杯-网络安全比赛(6) 模拟实验 Metasploit 控制并获取Windows 登录HASH、LM Hash和NTLM Hash密文解析

窃取WINDOWS账号密码 系统环境:主机(Windows系统 IP:192.168.126.129),虚拟机(KALI系统 IP:192.168.126.3),两者需要能通过本地网络互通互连。 攻击工具:Metasploit是一…

改变浏览器大小,图片(img)内容居中显示img标签,不是背景图

改变浏览器大小,图片&#xff08;img&#xff09;内容居中显示&#xff0c;img标签&#xff0c;不是背景图 效果直接上图&#xff1a; 上代码&#xff1a; <!DOCTYPE html> <html> <head><title>测试图片居中显示&#xff0c;高度不变只变宽度<…

Electron学习笔记(五)

文章目录 相关笔记笔记说明 七、系统1、系统对话框2、自定义窗口菜单3、系统右键菜单4、快捷键(1)、监听网页按键事件 &#xff08;窗口需处于激活状态&#xff09;(2)、监听全局按键事件 &#xff08;窗口无需处于激活状态&#xff09;(3)、补充&#xff1a;自定义窗口菜单快捷…

异常处理/ROS2异常处理模块源码解读与浅析

文章目录 概述ros2/rcutils/src/error_handling模块自身异常处理错误状态结构与存储本模块初始化错误状态的设置错误状态的获取错误状态的清理不丢失旧错误状态把手段还原为目的其他 概述 本文从如下几个方面对 ROS2.0 中 rcutils 库 error_handling 错误处理模块的源码进行解…

花了24小时做的采购、库存、进销存excel模板,真心好用,免费分享

花了24小时做的采购、库存、进销存excel模板&#xff0c;真心好用 在企业的日常运营中&#xff0c;进销存管理是一项至关重要的任务。它不仅涉及到商品的采购、销售和库存管理&#xff0c;还直接影响到企业的财务状况和市场竞争力。为了提高管理效率&#xff0c;许多企业选择使…

Redis 的 SDS 和 C 中字符串相比有什么优势?

C 语言使用了一个长度为 N1 的字符数组来表示长度为 N 的字符串&#xff0c;并且字符数组最后一个元素总是 \0&#xff0c;这种简单的字符串表示方式 不符合 Redis 对字符串在安全性、效率以及功能方面的要求。 C语言的字符串可能有什么问题&#xff1f; 这样简单的数据结构可…

Java程序员必知的9个SQL优化技巧

大多数的接口性能问题&#xff0c;很多情况下都是SQL问题&#xff0c;在工作中&#xff0c;我们也会定期对慢SQL进行优化&#xff0c;以提高接口性能。 这里总结一下常见的优化方向和策略。 1. 避免使用select *&#xff0c;减少查询字段 不要为了图省事&#xff0c;直接查询…

leetcode题目7

整数翻转 中等 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff09;。 示例 1&am…

别人家的UI表单为什么这么漂亮?而你却千篇一律。

设计漂亮的移动UI页面表单页需要考虑以下几个方面&#xff1a; 布局和结构设计 合适的布局和结构&#xff0c;使表单页面看起来整洁、清晰&#xff0c;并且易于使用。可以使用网格系统或者栅格布局来对表单进行划分&#xff0c;使不同的表单元素有明确的位置和排列。 色彩和配…

SQLite 命令

本章将向您讲解 SQLite 编程人员所使用的简单却有用的命令。这些命令被称为 SQLite 的点命令&#xff0c;这些命令的不同之处在于它们不以分号&#xff08;;&#xff09;结束。 让我们在命令提示符下键入一个简单的 sqlite3 命令&#xff0c;在 SQLite 命令提示符下&#xff0…

GO+树莓派+E53_IA1智慧农业模块

简介 之前手头上有小熊派的开发板&#xff0c; 有一个E53_IA1模块&#xff0c; 刚好用到树莓派上&#xff0c; 使用GO进行控制&#xff0c;实现智慧农业模块功能。 模块介绍 模块电路介绍 按硬件分成五块&#xff0c; 其中四块在本次用上了&#xff0c; 分别是 1. 补光模块&…

Docker nsenter 命令使用

查看容器对应宿主机上面的pid&#xff0c;容器技术的实质是进程&#xff0c;并没有完整的操作系统&#xff0c;就相当于在主机上面fork了一个子进程&#xff0c;通过docker daemon去fork一个子进程&#xff0c;这个子进程是可以在主机上面看到其pid的。 $ docker inspect -f {…

可视化大屏:城市治理方向,三维地图那是相当震撼呀。

随着城市化进程的加快&#xff0c;城市治理变得越来越复杂&#xff0c;需要大量的数据和信息来支持决策和管理。在这个背景下&#xff0c;可视化大屏作为一种新兴的信息展示工具&#xff0c;正逐渐在城市治理中发挥着重要作用。 首先&#xff0c;可视化大屏能够将庞大的数据和信…

kettle从入门到精通 第五十九课 ETL之kettle 邮件发送多个附件,使用正则轻松解决

想真正学习或者提升自己的ETL领域知识的朋友欢迎进群&#xff0c;一起学习&#xff0c;共同进步。若二维码失效&#xff0c;公众号后台加我微信入群&#xff0c;备注kettle。 问题场景&#xff1a; 一个朋友说他用kettle将生成好的多个文件&#xff08;a.xls和b.xls&#xff0…

【LeetCode算法】1768. 交替合并字符串

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、题目二、思路三、解决方案 一、题目 给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另…

代码随想录算法训练营第四十九天|123.买卖股票的最佳时机III,188.买卖股票的最佳时机IV

目录 123.买卖股票的最佳时机III思路代码 188.买卖股票的最佳时机IV思路代码 123.买卖股票的最佳时机III 题目链接&#xff1a;123.买卖股票的最佳时机III 文档讲解&#xff1a;代码随想录 视频讲解&#xff1a;动态规划&#xff0c;股票至多买卖两次&#xff0c;怎么求&#x…

图论专题训练

leecode 547 并查集 class Solution { public:int findCircleNum(vector<vector<int>>& isConnected) {ini();int len isConnected.size();for(int i0;i<len;i){for(int j0;j<len;j)if(isConnected[i][j]){unio(i,j);}}int ans 0;for(int i0;i<len;…

爱分析基于杭州云器Lakehouse实现成本最优的一体化管理,新一代数据平台的建设方式

导读 1.当前&#xff0c;企业在大数据和数据中台建设上取得成果&#xff0c;但数据开发管理仍具挑战性&#xff08;成本、效率、复杂度&#xff09;。 2.随数据平台领域成熟&#xff0c;厂商应结合自身需求&#xff0c;重新思考“基于开源自建数据平台”的重资产模式与“购买…

js: async/await

当你使用 async 关键字定义一个函数时&#xff0c;这个函数会返回一个 Promise。而当你在这个函数内部使用 await 关键字时&#xff0c;你实际上是在“等待”一个 Promise 的解决&#xff08;fulfilled&#xff09;或拒绝&#xff08;rejected&#xff09;。在等待期间&#xf…