• [^] # Re: Tite question par rapport au message précédent

    Posté par . En réponse à la dépêche PTT : un outil de trace pour la NPTL. Évalué à 10.

    C'est presque la même chose, mais pas du tout.
    On va dire (rapidement) qu'il existe trois grandes entités.
    -Le fork.
    -Le clone.
    -Le thread.

    Un fork continue l'execution sur deux processus distinct, chacun ayant sa copie de ce qui a été fait avant le fork et ses instructions sur ce qu'il faut faire après. Exactement comme deux bonhommes qui ont marché main dans la main pendant un moment et dont un décide d'aller à droite et l'autre à gauche. Ce qui affecte un des deux bonhommes n'a aucun effet sur l'autre. La copie des variables et de l'état d'execution est complète.

    Un clone est très semblable à un fork, sauf que les deux processus ainsi créés gardent ennormément de choses en commun. La plupart des variables restent dans un pool partagé par les deux processus. Pour reprendre l'exemple de nos deux bonhommes, c'ets un peu comme si bien que séparés ils utilisent tout les deux des chéquiers sur le même compte en banque. Quand un des deux bonhomme utilise un chèque pour payer quelque chose, le compte en banque des deux diminue. Par contre ils font chacun leur bout de chemin séparément. Ici la copie de l'état d'execution est complète (comme pour fork) mais seule les variables nécessaires au fonctionnement d'un processus et au système sont dupliquées. Toutes les autres variables restent communes.

    Un thread n'est pas un processus à part entière. Si quoi que ce soit arrive au père, les threads meurent. De plus les threads n'ont pas vraimetn d'environnement d'éxecution propre, ils restent dans l'ombre du processus qui les a créé. Ici nos bonhommes sont des enfants, qui peuvent aller et venir plus ou moins librement mais qui ont interdicion de sortir du jardin et qui doivent rentrer à la maison fréquamment pour dormir/manger/lire un livre etc. Par contre comme ils vivent dans la même maison, ils peuvent tout se partager.
    Ici ni les variables ni l'environnement d'execution n'est dupliqué. Les threads jouissent d'une certaine indépendance, mais ce ne sont pas des processus autonomes au sens large.