This shows you the differences between two versions of the page.
so:laboratoare:resurse:threaduri_extra [2013/01/31 21:57] 127.0.0.1 external edit |
so:laboratoare:resurse:threaduri_extra [2015/05/18 20:00] (current) adrian.stanciu [Modificarea dimensiunii și adresei de start a stivei] |
||
---|---|---|---|
Line 127: | Line 127: | ||
Dacă firul a fost creat unificabil stiva nu poate fi eliberată până nu se va termina un apel <tt>pthread_join</tt> pentru respectivul fir. | Dacă firul a fost creat unificabil stiva nu poate fi eliberată până nu se va termina un apel <tt>pthread_join</tt> pentru respectivul fir. | ||
- | De obicei biblioteca de fire de execuţie alocă 1M de memorie virtuală pentru fiecare stivă de fir de execuţie. | + | De obicei biblioteca de fire de execuţie alocă 2M de memorie virtuală pentru fiecare stivă de fir de execuţie. |
Limita minimă pentru dimensiunea unei stive a unui fir de execuţie este PTHREAD_STACK_MIN. | Limita minimă pentru dimensiunea unei stive a unui fir de execuţie este PTHREAD_STACK_MIN. | ||
Line 163: | Line 163: | ||
Cum se face planificarea? | Cum se face planificarea? | ||
- | Fibrele nu sunt planificate preemptiv (sunt lăsate să ruleze până cedează de buna voie procesorul), cu observaţia că dacă firul din care fac parte este preemptat, automat fibră în execuţie este preemptată. O fibră este planificată printr-o comutare către ea dintr-o altă fibră. Kernelul planifică fire de execuţie, nu fibre. | + | Fibrele nu sunt planificate preemptiv (sunt lăsate să ruleze până cedează de buna voie procesorul), cu observaţia că dacă firul din care fac parte este preemptat, automat fibra în execuţie este preemptată. O fibră este planificată printr-o comutare către ea dintr-o altă fibră. Kernelul planifică fire de execuţie, nu fibre. |
==== ConvertThreadToFiber ==== | ==== ConvertThreadToFiber ==== | ||
Line 199: | Line 199: | ||
*''lpStartAddress'' - pointer la funcţia ce trebuie executată de către fibră. | *''lpStartAddress'' - pointer la funcţia ce trebuie executată de către fibră. | ||
- | *tentie!** Aceasta nu va fi executată decât după un apel ''SwitchToFiber'' către fibră. | + | **Atentie!** Aceasta nu va fi executată decât după un apel ''SwitchToFiber'' către fibră. |
Această funcţie arata așa : | Această funcţie arata așa : | ||
Line 221: | Line 221: | ||
''lpFiber'' reprezintă adresa fibrei ce este planificată. | ''lpFiber'' reprezintă adresa fibrei ce este planificată. | ||
- | *tentie!** Apelul : | + | **Atentie!** Apelul : |
<code c> | <code c> |