第23课:综合实战:任务调度
进度 0/24
⏰
综合实战:任务调度
队列+结构体,模拟任务调度不掉链!
📖知识引入
📋任务建模
struct Task { string name; int cost; },一个结构体装下任务名和耗时
📥任务入队
任务按到达顺序push进队列,先来先执行,公平调度
⏱️顺序处理
循环取出队头任务执行cost耗时,模拟CPU逐个消化任务
🧮等待时间
当前时刻累加cost,每个任务的等待=之前所有任务耗时之和
💡
queue<Task>搭配struct是模拟题黄金组合:数据打包进队,取出即用
🔍任务调度模拟
struct Task {
string name; // 任务名
int cost; // 耗时
};
queue<Task> q;
q.push({"下载", 3});
q.push({"安装", 2});
q.push({"重启", 1});
int now = 0; // 当前时刻
while (!q.empty()) {
Task t = q.front(); // 取队头
q.pop();
cout << t.name << " 在第" << now << "分钟开始" << endl;
now += t.cost; // 时间流逝
}
// 下载0分开始 / 安装3分开始 / 重启5分开始先进先出调度,结构体让任务信息整整齐齐入队
🎯小测验
第1题:struct Task在任务调度中的作用是?
第2题:队列调度的顺序规则是?
第3题:任务“下载3分钟、安装2分钟”,安装任务从第几分钟开始?
📝本课知识点
- ✓struct打包任务信息
- ✓queue实现先来先服务
- ✓累加cost模拟时间流逝
第23课完成!继续探索下一课吧 🚀
