决赛答案

· · 个人记录

#include <iostream>
#include <string>
#include <vector>

// 任务状态枚举
enum class TaskStatus {
    WAITING,
    RUNNING,
    COMPLETED
};

// 任务基类
class Task {
public:
    Task(int id, int priority) : taskId(id), taskPriority(priority), taskStatus(TaskStatus::WAITING) {}
    virtual ~Task() {}

    int getTaskId() const { return taskId; }
    int getTaskPriority() const { return taskPriority; }
    TaskStatus getTaskStatus() const { return taskStatus; }

    virtual void execute() = 0;

    void setTaskStatus(TaskStatus status) { taskStatus = status; }

private:
    int taskId;
    int taskPriority;
    TaskStatus taskStatus;
};

// 计算密集型任务类
class ComputeIntensiveTask : public Task {
public:
    ComputeIntensiveTask(int id, int priority) : Task(id, priority) {}
    void execute() override {
        // 这里可以添加大规模矩阵运算等计算密集型操作
        std::cout << "ComputeIntensiveTask " << getTaskId() << " is running." << std::endl;
        setTaskStatus(TaskStatus::COMPLETED);
    }
};

// I/O密集型任务类
class IOIntensiveTask : public Task {
public:
    IOIntensiveTask(int id, int priority, std::string resource) : Task(id, priority), resourcePath(resource) {}
    void execute() override {
        // 这里可以添加文件读取或网络请求等I/O密集型操作
        std::cout << "IOIntensiveTask " << getTaskId() << " is running on " << resourcePath << std::endl;
        setTaskStatus(TaskStatus::COMPLETED);
    }

private:
    std::string resourcePath;
};