Yop
Je m'intéresse un peu aux tasks scheduler, ces trucs utilisé dans les Systèmes d'exploitation et les Moteurs de jeu, où la performance est cruciale.
J'aimerais bien, pourquoi pas, en faire un. en C++. Cependant je ne trouve pas vraiment de tuto très développé et bien expliqué. La plupart sont obscures et ne rentrent pas dans les détails, mais si j'ai bien suivi :
Un task scheduler crée X "Workers" (On peut lui demander d'en utiliser autant qu'on veut selon les types de tâche à faire et la puissance de la machine) . Chaque worker prend dans la mesure du possible une Tâche en attente et l'exécute. Si cette tâche a des dépendances qui n'ont pas encore été exécutée, il va attendre et en faire une autre en attendant. Si cette tâche possède des "enfants" qui doivent être exécuté, il les fera en priorité par rapport aux autres tâches d'abord..
J'ai bon ? Si oui, l'implémentation de cela est un peu libre, je fait ça comme je veux et j'optimise moi même après selon l'application qui va l'utiliser (A la fin de mon cycle de développement je sais, merci Donald Knuth), les trucs drôle du développement quoi :p
Exemple :
Application Client serveur multithreadé avec 2 types de tâches : Récupérer, pour récupérer les données recues par le serveur, et répondre, pour répondre à ces dernieres de manière appropriées.
Imaginons, je crée 4 workers, et j'ajoute en continu Une tâche "Répondre" avec comme dépendance la tâche "Récupérer". Mon worker va tomber sur la tâche répondre par exemple, et se rendre compte qu'elle a besoin de la tâche Récupérer pour être exécuter, il va donc exécuter celle la d'abord avant de faire quoi que ce soit d'autre. (Après y'a le bordel de récupérer les données d'une autre task mais ça je pense que je peux me débrouiller.)
Merci