[gull] Truc et astuces: multithread en bash

Marc SCHAEFER schaefer at alphanet.ch
Tue Dec 29 12:58:03 CET 2020


> Il me semble de la difference entre multitâche et multithread est: 
>  La différence entre le fait de lancer plusieurs tâches en parallel 
>  et le fait de converser avec plusieurs interlocuteurs simultanément.

Petit complément historique: pendant longtemps, le monde UNIX ne
connaissait du multi-tâche que le multi-processus, et pas le
multi-thread.

En effet, le modèle fork(2) était très efficace, en particulier avec le
copy-on-write et d'autres optimisations.  D'autres plateformes non
standard avaient, elles, d'horribles problèmes de performance avec leur
CreateProcess() et équivalents.

Ce qui fait que les `threads' (en tant qu'unités de travail séparées,
avec pile d'exécution séparée mais pour le reste partageant tout
au sein d'un processus) sont devenues très populaires en dehors d'UNIX.

Les threads ont certes été standardisées et même implémentées, mais
plusieurs modèles ont vu le jour: threads au sein d'un processus,
threads comme processus légers gérés par l'OS.

Aussi, certains langages ont implémentés des threads et ont poussé leur
utilisation (Java p.ex.).

Aujourd'hui, le modèle UNIX des processus avec isolation forte reste un
modèle très fiable, très simple et très performant. On peut l'exploiter
avec le shell comme Félix le fait, ou dans quasiment tous les langages
de programmation.

Avec l'avantage sous Linux qu'on peut passer continument d'un thread à
un processus grâce à clone(2): on choisit ce qu'on veut partager!

A mon avis:

Aujourd'hui, le mot multi-thread est gentinement devenu synonyme de
plusieurs flots d'exécution concurrents sans forcément départager entre
modèle processus ou modèle thread, même si bien souvent c'est le modèle
thread qui est sous-entendu.


More information about the gull mailing list