ciao a tutti, di solito su questo forum riesco a trovare sempre una risposta ai miei problemi.. speriamo che anche questa volta sia così..
sto creando un server multi-thread.
Codice PHP:
while (1) {
if ( (fd2 = accept(fd1, (struct sockaddr*) &client_addr, &client_len)) <= 0 )
write(2, "Errore Accept\n", strlen("Errore Accept\n"));
else {
sprintf(buf, "FD2= %d\n", fd2);
write(2, buf, strlen(buf) );
if (pthread_create(&tid, NULL, client, &fd2))
write(2, "Errore pthread_create\n", strlen("Errore pthread_create\n"));
else {
sprintf(buf, "#Connessione: %d; Thread client: %u; Numero client connessi: %d#\n", fd2, (unsigned int)tid, CONT + 1);
write(1, buf, strlen(buf));
}
}
sleep(1);
}
close(fd1);
}
questa parte di codice è quella che crea il thread nuovo...il problema che ho è che il canale di comunicazione fd2 cambia di valore prima che il thread ne abbia preso il valore, per risolvere (artigianalmente) ho inserito quello sleep(1) che ovviamente è bruttissimo da vedere.
come posso risolvere in maniera corretta?