PDA

View Full Version : [Linux] fork e pthreads


71104
24-05-2007, 17:33
se in un processo girano molti pthreads e il thread primario chiama la fork, nel processo figlio ovviamente ci sarà un solo thread, giusto? e se la fork la chiamo da un thread diverso da quello primario che succede nel nuovo processo? l'unico thread del nuovo processo continua l'esecuzione nel contesto del pthread che ha chiamato la fork?

cionci
25-05-2007, 09:40
Sinceramente non ho mai provato, ma a rigor di logica dovrebbe continuare l'esecuzione con il contesto del thread che l'ha chiamato...altrimenti con quale contesto dovrebbe essere inizializzata l'immagine del nuovo processo ?

ilsensine
25-05-2007, 12:09
se in un processo girano molti pthreads e il thread primario chiama la fork, nel processo figlio ovviamente ci sarà un solo thread, giusto?
Giusto
e se la fork la chiamo da un thread diverso da quello primario che succede nel nuovo processo? l'unico thread del nuovo processo continua l'esecuzione nel contesto del pthread che ha chiamato la fork?
No in un nuovo contesto (nuovo pid, nuova tabella di pagine ecc.)

cionci
25-05-2007, 18:47
No in un nuovo contesto (nuovo pid, nuova tabella di pagine ecc.)
Anche io intendevo questo...cioè che il contesto del thread chiamante inizializza l'immagine del nuovo processo...

71104
26-05-2007, 15:17
No in un nuovo contesto (nuovo pid, nuova tabella di pagine ecc.) si, quello che intendevo era: il PCB viene rinnovato e di fatto il contesto è quello di un altro processo, ma l'esecuzione continua da dove era arrivato quel thread (che non era il primario).

una cosa ovvia insomma :D
solo che non ne ero sicuro perché non l'avevo visto specificato da nessuna parte nel man (poi magari so ciecato io :fagiano: però su MSDN le cose le trovo tanto facilmente :D)