[so] [Tema 4]so_fork & friends
Radu Stancu
stancumradu at gmail.com
Mon May 6 19:21:45 EEST 2013
Razvan Crainea <razvan.crainea at ...> writes:
>
>
> Salut, Radu!
> 1. Într-adevăr, după fiecare operație ar trebui apelat scheduler-ul. Dacă
acesta determină că trebuie preemptat, ar trebui să renunțe la procesor și
să treacă în coada READY.
>
> 2. Da, ideea ta este bună. so_fork ar trebui să fie un fel de wrapper
peste pthread_create, unde poți stoca ce variabile vrei. so_fork este
considerată și ea o instrucțiune, deci poate fi preemptată. Totuși regulile
planificatorului trebuie să fie repectate.
>
> 3. Ești pe drumul cel bun :).
> 4. Da.
>
> Spor!
>
>
> 2013/5/4 Radu Stancu <stancumradu <at> gmail.com>Salut,
> Am si eu mai multe nelamuriri la tema 4.
> 1. Din cate observ, trebuie sa facem re-schedule la fiecare final de
> functie, just in case se termina cuanta de timp.Este corect asa?
> 2. Cum fac un thread abia creat sa astepte randul sau? Ma gandeam sa fac
> similar cu wait, sa am o variabila de conditie care sa blocheze threadul,
> dar ideea e unde o pun? Fac o functie separata care sa fie apelata de
> pthread_create si in ea pun variabila? Daca fac asa, se blocheaza so_fork si
> voi avea probleme la testare, de exemplu de la testul 4 in sus. Cel putin
> asa banuiesc ca se intampla.
> 3. Dupa trezirea din wait, daca threadul trebuie sa mai astepte sa ii vina
> randul, unde fac asta? Pun in wait sa astepte iar dupa o variabila de
> conditie globala si ramane blocat in wait? (practic cand este planificat,
> iese din wait si executa in continuare)
> 4.Pot face broadcast in signal si sa blochez threadurile ca in punctul 3?
> Momentan doar atat. Daca cineva are idei sau intrebari, feel free to
contribute
>
___
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?
2. Ai vreo referinta pentru a rezolva bucata aceasta din exemplu?
start_thread(params)
-> asteaptă să fie planificat
-> call handler(prio)
-> iesire thread
Planificarea si iesirea stiu s-o fac, dar nu prea gasesc partea cu call handler.
Multumesc.
More information about the so
mailing list