[so] [Tema 4]so_fork & friends
Razvan Crainea
razvan.crainea at gmail.com
Tue May 7 02:19:45 EEST 2013
Salut, Radu
2013/5/6 Radu Stancu <stancumradu at gmail.com>
>
> Salut,
> Revin cu 2 intrebari:
> 1. Daca am un vector de variabile de conditie, dupa ce le initializez cu
> pthread_cond_init(&v[i], NULL), v[i] va fi diferita de v[j]? Adica daca dau
> signal(&v[i]), se trezeste doar v[i] sau ambele?
Dacă ai variabile diferite, atunci când faci signal pe una din ele, se
va trezi unul din threadurile care așteaptă la variabila respectivă.
Deci dacă un thread așteaptă la v[i], iar altul la v[j], signal(&v[i])
va trezi doar primul thread.
>
> 2. Ai vreo referinta pentru a rezolva bucata aceasta din exemplu?
>
Bucata respectivă ar arăta ceva de genul :
start_thread(params)
# aici threadul este încă în coada NEW
-> asteaptă să fie planificat # apelează scheduler() - dacă noul
thread urmează să fie planificat, atunci se întoarce imediat, altfel
se blochează
# aici threadul a ieșit din coada NEW și a fost planificat prima oară
-> signal so_fork()
-> call handler(prio)
# scoate threadul din toate cozile existente
-> iesire thread
--
Răzvan Crainea
More information about the so
mailing list