next up previous contents
Next: POSIX threadek identitása Up: POSIX-threadek Previous: POSIX-threadek

POSIX threadek létrehozása és megszuntetése

Egy új POSIX threadet (a továbbiakban P-thread) a pthread_create() függvénnyel hozhatunk létre. Ennek prototípusa a következo:

int pthread_create  (pthread_t *thread, 
                     pthread_attr_t *attr,
                     pthread_func_t func,
                     any_t arg);

A pthread_create() függvény létrehoz egy új threadet az attr argumentumában megadott attributumokkalgif . A thread futása a func argumentumban megadott függvénynek, az arg argumentumban átadott értékkel mint függvényargumentummal történo végrehajtásából áll (vagyis ez úgy viselkedik, mintha végrehajtanánk párhuzamosan a func(attr); C nyelvu függvényt ...). Az elso argumentumban azt a helyet kell megadni, ahova a thread-könyvtár az elindított thread azonosítóját teheti. Ha az elindítandó thread attributumaival kapcsolatban nincsenek különösebb igényeink, akkor megadhatjuk az attr argumentumként a pthread_attr_default értéket.

Miután a thread befejezte a feladatát, végre kell hajtania a pthread_exit() függvényt. Ennek a függvénynek egyetlen argumentuma van, a befejezodött thread kilépési kódja, amit a thread elindítója a thread befejezése után megkap. Ennek a függvénynek a prototípusa a következo:

void pthread_exit(any_t status);

P-threadek várhatnak más P-threadek befejezodésére a pthread_join() függvénnyel. Ennek prototípusa a következo:

int pthread_join(pthread_t thread, any_t *exit_status);

A pthread_join() függvényt végrehajtó thread megvárja az elso argumentumában megadott thread befejezodését, majd a második argumentumában visszaadja a befejezodött thread kilépési kódját (amit a pthread_exit() végrehajtásakor a befejezodo thread megadott).

Mivel a pthread_join() függvényt a már befejezodött P-threadekre vonatkozóan is végrehajthatjuk (és ez muködik is!), ezért a P-thread könyvtár kénytelen az összes elindított threadrol információkat nyilvántartani (például a thread kilépési kódját). Ahhoz, hogy a nyilvántartott információk ne foglalják le a memóriát, a programozónak lehetosége van a pthread_detach() függvénnyel azt tanácsolnia a P-thread könyvtárnak, hogy a függvény egyetlen argumentumában specifikált threadre vonatkozóan nem fogja többé végrehajtani a pthread_join() függvényt, ezért a megadott threadre vonatkozóan nyilvántartott információkat a továbbiakban nem kell tárolni. A prototípusa a következo:

int pthread_detach(pthread_t *thread);



Csizmazia Balazs
Tue Apr 2 00:06:27 MET DST 1996