🐵指尖猴全新升级
第23课:综合实战:任务调度
⏰

综合实战:任务调度

队列+结构体,模拟任务调度不掉链!

📖知识引入

📋任务建模
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课完成!继续探索下一课吧 🚀