Crypto : Node.js, du single-thread au multithreading
Un thread est un segment de code permettant d’exécuter un ensemble d’instructions au sein d’un environnement. On l’utilise pour exécuter simultanément deux programmes sur un même réseau. Le multithreading fait référence à une plus grande vitesse de traitement des opérations par un processeur (réseau, environnement, etc.). Ainsi, un système multithread peut exécuter plusieurs threads à la fois, sans perdre en efficacité. Le multithreading appliqué dans le domaine des cryptomonnaies permet d’augmenter la vitesse de transaction au sein des blockchains. Cela dit, il est aujourd’hui possible de l’utiliser dans Node.js, un environnement d’exécution qui est à la base single-thread. Il faut savoir que Node.js permet de créer des applications faciles à utiliser, rapides et évolutives.
Node.js, pour gérer les opérations asynchrones
Node.js est basé sur le langage de programmation JavaScript (JS) qui est nativement synchrone. Notez qu’avec un langage synchrone, les actions sont ordonnées dans le temps. Un tel langage permet de développer des systèmes complexes dotés de réactivité. À la base, JavaScript devait s’exécuter sur les navigateurs web et permettre aux utilisateurs d’interagir avec les pages web. Le problème est que le flux d’exécution synchrone peut connaitre des blocages si les opérations s’effectuent sur un seul thread. Pour résoudre ce problème, il fallait que JS devienne asynchrone, pour éviter d’avoir à créer plusieurs threads.
Ryan Dahl a créé Node.js justement pour éviter l’utilisation de threads, tout en gérant les opérations asynchrones. Selon la documentation de Node.js, « la mise en réseau basée sur les threads est relativement inefficace et très difficile à utiliser. De plus, les utilisateurs de Node.js n’ont pas à craindre de bloquer le processus, puisqu’il n’y a pas de verrous. ».
Cela dit, bien qu’il soit monofilaire (un seul thread), Node.js permet généralement d’exécuter les opérations sans blocage du processus concerné. C’est pour cette raison que cet environnement peut être aisément utilisé pour développer des systèmes évolutifs. Notez qu’il peut arriver que le flux d’exécution soit bloqué si l’on fait appel aux méthodes synchrones de la bibliothèque standard de Node.js.
Single-thread et multiprocessing
Node.js constitue généralement un environnement single-threaded, ce qui signifie que les processus s’exécutent en utilisant un seul thread. Avec ce système, l’exécution d’un ensemble d’opérations à un moment donné empêche celle des autres opérations. Étant donné que cette situation n’est pas très pratique, Node.js propose le multiprocessing qui est différent du multithreading.
Le multiprocessing implique la création de plusieurs processus pour effectuer des opérations sur un fichier par exemple. Avec cette méthode, les utilisateurs ont la possibilité d’exécuter certaines opérations en parallèle. Cependant, la création d’un processus consomme beaucoup de ressources et elle est lente. Le multiprocessing est donc moins pratique que le multithreading où la création d’un thread est rapide et économique.
Le module worker-threads de Node.js
Les worker-threads (threads de travail) sont des programmes capables d’exécuter des opérations JavaScript qui requièrent beaucoup de ressources du processeur. Ils traitent les transactions sans bloquer l’exécution des programmes qui doivent fonctionner parallèlement. Par contre, ils ne sont pas très efficaces pour effectuer les travaux intensifs.
Notez que le module worker-threads n’est disponible qu’à partir de la version 10.5.0 de Node.js. Le multithreading est appliqué dans Node.js grâce au module worker-threads. La documentation de Node.js fournit des renseignements détaillés sur les codes adaptés pour utiliser le module worker-threads.
Il faut savoir qu’un processus peut être composé de plusieurs instructions. Avec le single-thread, chaque instruction s’exécute après l’exécution de l’opération qui la précède, ce qui peut bloquer le flux d’exécution. Par contre, avec le multithreading, toutes les instructions d’un processus peuvent s’exécuter de façon simultanée, limitant le risque de blocage.
À la base, l’environnement Node.js ne supporte pas le multithreading : on y applique plutôt le multiprocessing. Mais, grâce au module worker-threads, il est désormais possible d’appliquer le multithreading dans Node.js. Avec le multithreading, on assiste à l’exécution simultanée de plusieurs segments de code appelés threads au sein d’un seul processus. Ceci permet de créer des applications plus rapides et évolutives.
Maximisez votre expérience Cointribune avec notre programme 'Read to Earn' ! Pour chaque article que vous lisez, gagnez des points et accédez à des récompenses exclusives. Inscrivez-vous dès maintenant et commencez à cumuler des avantages.
Derrière la signature générique « Rédaction CT » se trouvent de jeunes journalistes et des auteurs aux profils particuliers qui souhaitent garder l’anonymat car impliqués dans l’écosystème avec certaines obligations.
Les propos et opinions exprimés dans cet article n'engagent que leur auteur, et ne doivent pas être considérés comme des conseils en investissement. Effectuez vos propres recherches avant toute décision d'investissement.