/
savushkin
/
CubeTaskManager
Обзор
Документация
Войти
/
savushkin
/
CubeTaskManager
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
cube_tm2/task.h
107 строк
3 KB
Alexander Savushkin
feat: cube_tm_2 - 2025-10-23 17:58:06
23 окт 2025, 17:58
23 окт 2025, 17:58
02548f3
Код
Авторство
О чём код?
#ifndef TASK_H #define TASK_H #include <iostream> #include <memory> #include <string> #include <functional> #include <vector> #include <algorithm> #include <cstdlib> #include <ctime> // Типы задач enum class TaskType { SYSTEM = 0, USER = 1, BACKGROUND = 2 }; // Состояния задач enum class TaskState { READY, RUNNING, SUSPENDED, TERMINATED }; // Базовый класс задачи с расширенными полями class Task { public: int task_id; std::string name; TaskState state; int priority_percent; // Приоритет в процентах (0-100) TaskType type; // Указатель на функцию для основной логики задачи std::function<void()> execute_function; // Указатель на массив данных icon (симуляция) unsigned char *icon_data; size_t icon_size; // Дополнительные поля void *task_object; int cpu_usage; int memory_usage; bool skip_execution; // Флаг пропуска выполнения int execution_count; // Счетчик выполнений // Конструктор Task(int id, const std::string &task_name, TaskType task_type, int priority_percent = 50, // По умолчанию 50% std::function<void()> exec_func = nullptr, unsigned char *icon = nullptr, size_t icon_size = 0, void *obj = nullptr); // Деструктор virtual ~Task(); // Конструктор копирования Task(const Task &other); // Оператор присваивания Task &operator=(const Task &other); // Стандартная логика выполнения virtual void defaultExecute(); // Запуск задачи virtual void execute(); virtual void suspend(); virtual void resume(); virtual void terminate(); // Установка пользовательской функции выполнения void setExecuteFunction(std::function<void()> func); // Установка icon данных void setIconData(const unsigned char *data, size_t size); // Получение информации о задаче void printInfo() const; // Установка флага пропуска выполнения void setSkipExecution(bool skip) { skip_execution = skip; } bool shouldSkipExecution() const { return skip_execution; } // Установка приоритета в процентах void setPriorityPercent(int percent) { priority_percent = std::max(0, std::min(100, percent)); } int getPriorityPercent() const { return priority_percent; } // Получение приоритетной группы (0-9) int getPriorityGroup() const; private: void simulateWork(); }; #endif