Nouvelles Chroniques d'Amethyste

Penser au Sens, pas au Verbe

Asynchronisme: les mots pour le dire

Poster un commentaire

Glossaire de quelques termes fréquemment rencontrés lorsque l’on parle d’asynchronisme et de ce qui gravite autour.

  • Système concurrentiel:
    Des opérations identiques ou non se produisent en même temps dans le système.
  • Multi-thread:
    On a plusieurs contextes d’exécution en même temps.On pense souvent que concurrence implique multi threading. Ce n’est pas exact.Inversement multi-threading n’est pas tout à fait synonyme d’accès concurrentiel. C’est un terme plus spécifique. On pourrait par exemple avoir certes plusieurs threads, mais que l’on active les uns à la suite des autres.
    Je ne prétends pas que c’est bien utile, mais on pourrait le faire.
  • Parallélisme:
    Des calculs/opérations sont effectués en parallèle.Le multi-threading est une façon de faire du parallélisme, toutefois l’un n’implique pas l’autre.Un serveur dispose d’un certain nombre de cœur physiques ou virtuel. Chacun peut travailler en parallèle.
    Par exemple si on a 8 cœurs, on peut imaginer lancer 8 calculs en parallèle, mais pas plus.
    Par contre il est possible de créer (presque) autant de threads que l’on souhaite. Le thread est une entité logique, pas du silicone.
    Cette différence est le centre de la question: si les threads peuvent s’empiler, on ne pourra jamais faire plus de calculs en parallèle qu’il y a de cœurs disponibles. Et c’est pour cette raison que l’on distingue les deux notions.Les threads ne sont par ailleurs pas l’unique façon d’organiser le parallélisme. Les cartes graphiques modernes (GPU), par exemple, atteignent un haut degré de parallélisme avec une abstraction de thread différente de celles des CPU.Retenons que le parallélisme est une notion hardware, le multi-threadisme est une notion logicielle.
  • Asynchronisme:
    On n’attend pas qu’une action se termine pour passer à la suite.L’asynchronisme est souvent utilisée pour lancer une action lente sans bloquer une action plus rapide qui demande de la responsivité, comme une IHM.Asynchronisme n’est en rien synonyme de multi-threadisme, on peut faire de l’asynchronisme en environnement mono thread.

    Un exemple typique est la lecture de données sur le disque dur qui est entièrement sous-traitée à l’électronique du contrôleur de disque par le CPU. A partir de cet instant il n’y a rien de particulier que peut faire le CPU pour contrôler l’opération, il ne peut que récupérer les données lues lorsqu’elles seront disponibles à un moment indéterminé.
    Dans ce schéma on n’est pas dans une architecture de threads.

    Asynchronisme n’est pas non plus synonyme de parallélisme.

    Un dernier point: l’asynchronisme n’agira quasiment pas dans les perfomances du code. La seule action visible sera sur les performances perçues. Ainsi l’IHM restera responsive alors que des traitements ont lieux dans les coulisses

 

Microsoft fournit une librairie spécialisée capable de prendre en charge la concurrence, le multi-threading et l’asynchronisme de façon très simple. C’est la TPL:

https://msdn.microsoft.com/fr-fr/library/dd537609(v=vs.110).aspx

 

Voir aussi:

https://amethyste16.wordpress.com/2014/10/02/les-nouveaux-chemins-vers-lasynchronisme-i/

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s