Tvoici des moments où vous devez tirer pleinement parti de chaque once de performance possible pour faire du jeu de vos rêves une réalité. Entrez dans le système de tâches dans Unity. Il permet au développeur d’écrire du code multithread qui peut toujours interagir avec le reste d’Unity.
Le multithreading permet au programme de s’exécuter plus rapidement en tirant parti de la capacité du processeur à traiter plusieurs threads en même temps sur plusieurs cœurs. Généralement, cela signifie qu’un thread principal génère plusieurs autres threads qui effectuent à leur tour le travail. Le problème est que les jeux ont tendance à générer une tonne de threads. À tel point que la surcharge rend le processeur moins efficace. Alors, comment pouvons-nous résoudre ce problème ? Vous obtenez un emploi.
Un système de tâches est un groupe de fils de travail qui sont exécutés sur plusieurs cœurs du processeur. Cela vous permet d’économiser des ressources en évitant d’avoir à effectuer un changement de contexte. Le système Job fonctionne sur une file d’attente de tâches où un thread de travail prend un élément de la file d’attente et l’exécute. Il fait tout cela en veillant à l’exécuter dans l’ordre approprié afin qu’aucun problème ne survienne. Tous les Jobs n’ont pas de dépendances, tandis que d’autres en ont. Le débit peut dépendre de l’entrée et des dépendances qui leur sont associées. La meilleure partie? Le système C# Job d’Unity détecte toutes les conditions de concurrence potentielles et vous en protège. Comme c’est doux ?!
Pour créer un travail dans Unity, vous devez implémenter le IJob interface. Cette interface vous permet de définir une structure qui possède des paramètres et une fonction d’exécution. Dans l’exemple ci-dessous, nous définissons une tâche qui additionne deux nombres et renvoie le résultat dans un tableau.
Une fois que vous avez le travail, vous devez le planifier pour qu’il s’exécute dans le thread principal. Remarquez comment nous allouons de l’espace pour le tableau de résultats, puis le détruisons une fois que nous en avons terminé.
Bien que cela puisse sembler un exemple très rudimentaire de tâches, vous pouvez en réalité faire beaucoup de choses avec elles et elles offrent un avantage de vitesse extrême ! Regardez cette vidéo de la GDC 2018 pour en savoir plus