IO-DAY6

2024-04-08 08:36
文章标签 io day6

本文主要是介绍IO-DAY6,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

#include<myhead.h>
pthread_mutex_t m;
pthread_mutex_t n;void* train_b(void* arg)
{while(1){pthread_mutex_lock(&n);printf("火车B进入隧道\n");sleep(6);pthread_mutex_unlock(&n);}
}
int main(int argc, char *argv[])
{pthread_mutex_init(&m,NULL);pthread_mutex_init(&n,NULL);pthread_t id;pthread_create(&id,NULL,train_b,NULL);pthread_detach(id);while(1){pthread_mutex_lock(&m);printf("火车A进入隧道\n");sleep(3);pthread_mutex_unlock(&m);}return 0;
}





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

#include<myhead.h>
pthread_mutex_t m;
pthread_mutex_t n;
pthread_mutex_t t;
void* train_b(void* arg)
{while(1){pthread_mutex_lock(&n);printf("火车B通过隧道\n");sleep(2);pthread_mutex_unlock(&t);}
}void* train_c(void* arg)
{while(1){pthread_mutex_lock(&t);printf("火车C通过隧道\n");sleep(4);pthread_mutex_unlock(&m);}
}
int main(int argc, char *argv[])
{pthread_mutex_init(&m,NULL);pthread_mutex_init(&n,NULL);pthread_mutex_init(&t,NULL);pthread_t id1;pthread_t id2;pthread_create(&id1,NULL,train_b,NULL);pthread_create(&id2,NULL,train_c,NULL);pthread_detach(id1);pthread_detach(id2);pthread_mutex_lock(&n);pthread_mutex_lock(&t);while(1){pthread_mutex_lock(&m);printf("火车A通过隧道\n");sleep(1);pthread_mutex_unlock(&n);}return 0;
}

这篇关于IO-DAY6的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885083

相关文章

Java——IO流(一)-(5/8):IO流概述、字节流-FileInputStream 每次读取一个字节

IO流概述 介绍 输入输出流,用于读写数据。 I指Input,称为输入流:负责把数据读到内存中去。 O指Output,称为输出流:负责写数据出去。 IO流的应用场景 文件内容的读写永久保存应用数据复制粘贴对话通信等等 怎么学IO流 理清楚IO六点分类和体系循序渐进、深入学习每个IO流的作用和用法 IO流的分类 IO流总体来看就有四大类: 字节输入流:以内存

【Linux】系统文件IO·文件描述符fd

前言  C语言文件接口  C 语言读写文件 1.C语言写入文件 2.C语言读取文件 stdin/stdout/stderr 系统文件IO 文件描述符fd: 文件描述符分配规则: 文件描述符fd: 前言 我们早在C语言中学习关于如何用代码来管理文件,比如文件的输入和文件的输出,一些文件的接口,如何深入学习文件的知识,在Linux下一切皆文件,今天我们探讨Linux的基础I/

JavaIO流之创建字节输出流的2中方式

package fileoutputstream;import java.io.File;import java.io.FileOutputStream;public class FileOutputStreamDemo {public static void main(String[] args) throws Exception {//创建字节输出流对象方式1// FileO

JavaIO之删除指定目录(递归删除,先删除目录下的文件再删除目录)

package 输出指定文件绝对路径;import java.io.File;/** 需求:递归删除带内容的目录* * 目录我已经给定:demo* * 分析:* A:封装目录* B:获取该目录下的所有文件或者文件夹的File数组* C:遍历该File数组,得到每一个File对象* D:判断该File对象是否是文件夹* 是:回到B* 否:就删除*

第八章·Io流

Io流 文件流 文件与流 文件概念 属于文件的一种,与普通文件载体不同,文件是以硬盘为载体储存在计算机上的信息集合;是指存储在外部介质上的数据集合。可管理(增删改查),储存。 流概念 是指在计算机的输入/输出操作中各部件之间的数据流动,按照数据的传输方式分为 输入流(InputStream)----用来读取数据的输出流(OutputStream)----用来写出数据的 IO是输

Portainer.io安装并配置Docker远程访问及CA证书

Portainer.io安装并配置Docker远程访问及CA证书 文章目录 Portainer.io安装并配置Docker远程访问及CA证书一.安装 Portainer.io2.启动容器 二.docker API远程访问并配置CA安全认证1.配置安全(密钥)访问2.补全CA证书信息3.生成server-key.pem4.创建服务端签名请求证书文件5.创建服务端扩展配置文件 extfile.

【Linux】基础IO_3

文章目录 六、基础I/O3. 软硬链接4. 动静态库 未完待续 六、基础I/O 3. 软硬链接 使用 ln 就可以创建链接,使用 ln -s 可以创建软链接,直接使用 ln 则是硬链接。 我们对硬链接进行测试一下: 根据测试,我们知道了 硬链接就像一个重命名一样,向其中一个文件里面写,另一个也会改变 。但是删除后只会删除一个,这说明 文件的删除本质上是减少硬链接数。硬

IO-Link PD数据

目录 一、PD过程数据的特点 二、PD过程数据的功能 三、PD过程数据的使用输出说明 IO-Link是一种数字化、点对点通信协议和接口,广泛应用于工业自动化领域。其中,PD(Process Data)过程数据是IO-Link通信中的一个重要组成部分,它承载着设备在运行过程中产生的实时数据。以下是关于IO-Link中PD过程数据的特点、功能以及使用输出的完整说明: 一、PD过程数据

Nginx基础. eventfd, 异步IO 与epoll的相互协作

关于eventfd. 对于eventfd, 这里只是简单的讲它的功能. 看manpage就足够了, 其中的例子也很容易看懂 eventfd函数可以创建一个efd描述符, 该描述符在内核中维护着一个计数器counter. 在调用eventfd时, 可以传入参数指定内核中维护着的计数器的值. 如果这样调用: int efd = eventfd(0, 0);那么计数器值

java基础总结:(1)IO流+简单爬虫

文件可认为是相关记录或放在一起的数据的集合 file类常用的方法:    方法名称                                说明 boolean exists()     判断文件或目录是否存在 boolean isFile()  判断是否是文件 boolean isDirectory()判断是否是目录 String getPath() 返回此对象表示的文件的相对路径 S