[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