Bonjour,
Je suis un débutant en programmation C++, j'ai commencé à m'y interésser grace aux Arduino.
J'ai comme projet de réalisé un petit ordonanceur très léger. Il a pour but de minimisé le temps d'utilisation du processeur, en différants les appels des fonctions, par des appels periodique ou en m'assurant que la fonction ne soit executer qu'une seul fois.
Le code que je vous soumet est sous forme de header. j'ai commencer à faire des ébauches, il y a un peu plus d'un ans, à l'origine il était voué à tourné sur un Arduino architecture AVR, ce que je vous propose aujourd'hui utilise windows mais ça n'a pas vraiment d'importance pour l'instant, je me concentre sur le concepte et il n'est pas terminer.
Je n'est pas de probleme particulier avec le code que je vous présente, mais comme je suis un perfectioniste. Malgré n'avoir aucune formation en C++, je suis autodidacte et j'use et abuse de chat GPT pour rédiger le code.
Je sousmet mon projet à des personnes bienveillante pour me conseillez, pour en débattre... N'hesité pas à me dire si je fait n'importe quoi je ne le prendrais pas mal mais argumenter.
Voici la methode principale de la class SoftwareEngine / du header :
Je vous met une autre methode importante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 void SoftwareEngine::Start() { while (true) { std::vector<Task*> tasksToExecute; Task* nextTask = nullptr; // Vérifier les tâches prêtes et déterminer la prochaine tâche CheckTasks(tasksToExecute, nextTask); if (!tasksToExecute.empty()) { ExecuteTasks(tasksToExecute); } else if (nextTask) { ExecuteNextTask(nextTask); } } }
Merci d'avance pour vos réponse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 void SoftwareEngine::CheckTasks(std::vector<Task*>& tasksToExecute, Task*& nextTask) { UpdateCurrentTime(); uint64_t nextTime = UINT64_MAX; tasksToExecute.clear(); nextTask = nullptr; for (auto& task : taskList) { if (task.nextExecution <= currentTime) { tasksToExecute.push_back(&task); } else if (task.nextExecution < nextTime) { nextTime = task.nextExecution; nextTask = &task; } } }
PS : liens pastbin du code complet
https://pastebin.com/zp8rzkFy = SoftwareEngine.cpp
https://pastebin.com/7pz03Tkz = SoftwareEngine.h
Partager