Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2732 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Fork() et threads

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fork() et threads

n°1407289
TriadPtale
Posté le 15-07-2006 à 20:31:17  profilanswer
 

Bonsoir à tous :)
 
J'ai une petite question qui peut sans doute surprendre, ou qui est peut être un peu idiote si la réponse est évidente.
 
Que se passe-t-il si je fais un fork() dans la procédure principale d'un thread (créé avec pthread_create() ) ?
 
A priori, l'entièreté du processus va se forker et l'éxécution du processus fils va continuer au sein de la suite du code constituant le thread qui a fait l'appel fork() .
 
Mais est ce bien comme ça ? a-t-il connaissance des autres threads ? Commencent-il tous à s'éxécuter dans le processus fils ? Ou bien a t on juste un nouveau processus (le fils) avec un seul thread ?
 
Merci :)

mood
Publicité
Posté le 15-07-2006 à 20:31:17  profilanswer
 

n°1407290
TriadPtale
Posté le 15-07-2006 à 20:38:48  profilanswer
 

Au fait j'ai pensé à ceci :
 
pour des threads implémentés dans l'espace noyau (comme sous linux si je ne me trompe pas ) , le noyau peut voir lui même chaque thread comme des processus légers , et donc le fork ne concernerait qu'un seul des threads : le processus fils serait un processus monothread dont le thread principal exécute le code du thread depuis lequel le procesus parent à fait le fork()
 
par contre , pour des thread implémentés dans l'espace utilisateur, le noyau ne connait pas les threads et donc le fork() va dupliquer le processus dans son entièreté
 
Mais bon ce n'est qu'une hypothèse (quoique la deuxième me semble plus que probable...)

n°1407294
TriadPtale
Posté le 15-07-2006 à 20:45:18  profilanswer
 

Je pense avoir vu la réponse ici :
http://64.233.183.104/search?q=cac [...] =clnk&cd=1
 

Citation :


A process shall be created with a single thread. If a multi-threaded process calls fork(), the new process shall contain a replica of the calling thread and its entire address space, possibly including the states of mutexes and other resources. Consequently, to avoid errors, the child process may only execute async-signal-safe operations until such time as one of the exec functions is called. [THR]   Fork handlers may be established by means of the pthread_atfork() function in order to maintain application invariants across fork() calls.  
 
When the application calls fork() from a signal handler and any of the fork handlers registered by pthread_atfork() calls a function that is not asynch-signal-safe, the behavior is undefined.

n°1408345
brojnev
Posté le 18-07-2006 à 06:29:44  profilanswer
 


tu aurais eu la même réponse par

Code :
  1. man fork

  :)  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Fork() et threads

 

Sujets relatifs
Win32, threads, messages et blocagesProbleme de synchronisation ecriture tubes / multi threads fork
THREADS - utilisation de pthread.hProblèmes de variables communes à différents Threads
Threads sur un serveur J2EE ? Thread en tant que Singleton?Cherche docs/info sur threads
IDL, code utilisateur, exceptions, threads, enfin plein de trucs...[Perl] Probleme avec Fork
Plus de sujets relatifs à : Fork() et threads


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)