Ogni processo prima di iniziare la fase di creazione di uno o più thread deve comunicare al nucleo il numero di thread da creare detto concurrency level. Ciò è fatto invocando la routine :
#include<pthread.h>
int pthread_setconcurrency (int nThread);
|
Argomenti in ingresso :
Valore restituito :
Un thread è creato invocando la seguente routine del nucleo :
#include<pthread.h> int pthread_create (pthread_t *tid, const p_thread_attr*attr, |
Argomenti in ingresso :
Valore restituito :
Un volta creato un thread può esserci la necessità di sincronizzarsi con il suo istante di terminazione, cioè sospendersi finché il thread non è terminato. Questo è fatto tramite la funzione di nucleo :
#include<pthread.h>
int pthread_join (pthread_t tid, void **status);
|
Argomenti in ingresso :
Valore restituito :
Tale funzione ritorna al chiamante solo una volta che il thread il cui ID è passato nel parametro tid ha terminato la sua esecuzione. Il nucleo conserva le informazioni su un thread che ha terminato la sua esecuzione fino a quando su quest'ultimo non viene eseguita una pthread_join. Questo serve, per esempio, per evitare che un thread si blocchi indefinitamente aspettando un altro thread che ha già terminato la sua esecuzione.
La funzione pthread_kill, serve per mandare un segnale software a un thread. Il nome della funzione è giustificato dal fatto che in genere tale funzione viene usata per inviare un segnale di terminazione. Il problema delle segnalazioni software a un thread o a un task sarà affrontato più approfonditamente in seguito.
#include<pthread.h>
int pthread_kill (pthread_t tid, intsigno);
|
Argomenti in ingresso :
Valore restituito :