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 attributumokkal . 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);