使用Linux高级IPC机制实现一个多进程系统来模拟一个双向隧道内的交通流量控制系统,详细表述见说明pdf
.
├── CMakeLists.txt
├── Makefile
├── README.md
├── build
├── include 头文件
├── input 输入样例
├── linux_hw 可执行文件
└── src cpp文件
首先5行确定超参数
total_number_of_cars
maximum_number_of_cars_in_tunnel
tunnel_travel_time
total_number_of_mailboxes
memory_segment_size
- 通过的车数
- 隧道最多同时容纳的车数
- 车辆通过隧道的基准时间(真实值波动在30%)
- 隧道内可访问的信箱数
- 信箱大小
随后是每辆车的具体描述
每辆车均以car开始,end结束
car car_id direction
operation duration mailbox-no
...
end
car_id direction分别指定车的标识符和方向(0/1)
操作有w,r两种
w '写入内容' 写入时间 目标邮箱
r 读取长度 读取时间 目标邮箱
可见include/process.h中process类的实现
// 调度算法选择,是否使用红绿灯
bool use_rg = true;
// 输入时间格式改变
bool ex_input = true;
build目录下执行以下指令编译
cmake ..
make -j32
- 转移到项目目录
cd ..
- 随机选取一个input运行
./linux_hw ./input/test.txt
./linux_hw ./input/test2.txt
./linux_hw ./input/test3.txt
- 类别构建
- 同步组件
- 共享内存实现
- 毫秒级时间实现
- 输出规格统一 car.show
- 输出规格统一 process::leave>>car->model_str
- readMailbox debug
- 时间转换
- 测试数据构造
- 演示视频
- 报告