L’annonce est passée il y a quelques semaines sur le blog de la communauté Swift et mérite qu’on s’y attarde un peu. Avec Concurrency, le langage s’est enrichi de multiples mécanismes permettant d’optimiser la gestion des tâches parallèles au sein d’une application, notamment grâce au modèle d’acteur. L’objectif de cette nouvelle évolution est de faire travailler les acteurs entre différentes applications et différentes machines.
Swift fait jouer la concurrence pour exploiter la puissance des processeurs Apple
Pour rappel, le mécanisme d’acteur introduit dans Swift 5.5 est le suivant :
- un acteur se présente comme une classe ;
- un acteur effectue des opérations asynchrones ;
- les données de l’acteur sont protégées contre les accès simultanés par plusieurs tâches parallèles.
Si plusieurs tâches parallèles accèdent à la même donnée au même moment, l’application peut planter violemment. Les mécanismes de protection d’accès aux données ont en général tendance à bloquer l’exécution des tâches, tout en étant complexes à gérer. Le nouveau mécanisme introduit par les acteurs résout ce problème.
Donc, si on effectue plusieurs opérations en parallèle, le processeur est exploité de manière optimale et c’est plutôt chouette. On peut imaginer …