[OSy] rozhrani

Vlastimil Babka babka at d3s.mff.cuni.cz
Mon Oct 25 21:12:29 CEST 2010


On 10/25/2010 08:20 PM, as at strmilov.cz wrote:
> Dobry vecer,
> chtel bych se zeptat, jaky ma vyznam, ze thread_create vraci pointer na
> strukturu vlakna a ne primo strukturu, ackoliv ostatni funkce pracuji
> primo se strukturou. Znamena to, ze je potreba ho alokovat dynamicky
> pomoci malloc? Potom by spis davalo smysl, kdyby to thread_t byl jenom
> obaleny pointer do nejake pomocne datove struktury, kde by byla vsechna
> vlakna spravovana.
> Antonin Steinhauser
>
Dobry vecer,

thready pouzivaji rozhranni "druheho typu" (viz "Poznamky k rozhrannim" 
v uvodu zadani), cili thread_t je neco jako identifikator, ktery ve 
skutecnosti muze a nemusi byt ukazatel. O alokaci toho, co thread_t 
identifikuje, se stara funkce thread_create, uzivatel rozhranni ne.
Funkce thread_create pritom nevraci pointer na thread_t (jak se zrejme 
mylne domnivate), ale skutecne jen thread_t. Pouze k tomu nepouziva 
navratovou hodnotu funkce, protoze ta je jiz vyuzita pro chybove kody 
(typu int). Hodnotu thread_t tedy funkce vrati tak, ze ji zapise na 
adresu predaneho pointeru na thread_t.
Volani teto funkce pak bude vypadat napriklad takto:

thread_t my_new_thread;

if (thread_create (&my_new_thread, ...) == EOK) {
     // my_new_thread nyni obsahuje identifikator vytvoreneho threadu
     ...
}

Snad jsem to dostatecne ozrejmil,
Vlastimil Babka

> _______________________________________________
> OSy mailing list
> OSy at d3s.mff.cuni.cz
> https://d3s.mff.cuni.cz/mailman/listinfo/osy





More information about the NSWI004 mailing list