Salve a tutti sto cercando di scrivere un server concorrente in C tramite i socket e la libreria pthread solo che mi sono bloccato su un punto praticamente ogni volta che arriva una connessione creo un thread che gestisce la comunicazione e fin qui tutto ok il mio problema è che non saprei quando chiamare la funzione pthread_join:

codice:
for( ;; ){
...

if ( (conn_s = accept(list_s, NULL, NULL) ) < 0 ) {
	    fprintf(stderr, "ECHOSERV: Error calling accept()\n");
	    exit(EXIT_FAILURE);
	}

pthread_create( &thread[i], NULL, server_func, (void*) conn_s);
i++;

pthread_join( thread[i], NULL); 

...
}
Se usassi questo pezzo di codice dopo aver creato il thread il programma aspetterebbe la sua fine mentre io voglio che dopo averlo creato ritorni in ascolto di nuove connessioni.Non so se sono stato molto chiaro...volevo chiedere a voi se avevate qualche brillante idea o consiglio da darmi