2009-10-23 6 views

Répondre

3

Les threads sont parfois implémentés uniquement dans l'espace utilisateur (également appelé "green threads"), mais typiquement dans l'espace noyau. Le wikipedia article explique bien.

5

Sous Linux, pthread_create() et al. est implémenté dans le cadre du projet glibc. Il utilise le syscall (non portable, spécifique à Linux) clone(). (Le fork() de Linux est également implémenté en termes de clone()). Certains des BSD ont également un appel système similaire appelé rfork(). Je crois comprendre que clone() ou rfork() créeront tous deux un nouveau processus, mais vous pouvez spécifier un indicateur qui dit «utiliser une sémantique de copie à l'écriture pour lui donner un espace d'adressage différent». Donc, si vous voulez fork(), vous spécifiez cet indicateur, mais si vous voulez créer un thread, vous ne le faites pas, et vous vous retrouvez avec un espace d'adressage partagé.

(édité pour fournir plus de détails)

Questions connexes