#include <iostream>
#include <queue>
#include <string>
#include <chrono>
#include <thread>
class Task {
public:
std::string name;
int priority;
Task(const std::string& n, int p) : name(n), priority(p) {}
void execute() const {
std::cout << "Executing task: " << name << " (Priority: " << priority << ")" << std::endl;
// Simulate task execution
std::this_thread::sleep_for(std::chrono::milliseconds(500));
}
};
class TaskScheduler {
private:
std::queue<Task> taskQueue;
public:
void addTask(const Task& task) {
taskQueue.push(task);
}
void executeTasks() {
while (!taskQueue.empty()) {
Task currentTask = taskQueue.front();
taskQueue.pop();
currentTask.execute();
}
}
bool hasTasks() const {
return !taskQueue.empty();
}
int taskCount() const {
return taskQueue.size();
}
};
int main() {
TaskScheduler scheduler;
scheduler.addTask(Task("Read file", 2));
scheduler.addTask(Task("Process data", 1));
scheduler.addTask(Task("Write results", 3));
scheduler.addTask(Task("Send notification", 4));
std::cout << "Tasks in queue: " << scheduler.taskCount() << std::endl;
std::cout << "Executing tasks:" << std::endl;
scheduler.executeTasks();
std::cout << "All tasks completed." << std::endl;
return 0;
}