PDA

Visualizza la versione completa : [C] Chiudere thread


Metallica
23-06-2008, 14:50
Ho un client e un server che comunicano tramite socket tcp, uso i thread per la concorrenza.
Nel main del server ho la chiamata a pthread_create che fa si che ogni volta che un client manda una richiesta di connessione al server parte un nuovo thread.
Ora, può capitare che il client manda degli input al server per cui il server quando li rileva deve staccare il client.
Ho usato pthread_exit(0), funziona tutto "a meraviglia" l'unico problema è che la finestra dove è in esecuzione il client non ritorna il controllo al prompt.

Ovvero una volta che il server invia la pthread_exit, il client resta "appeso" in attesa di ctrl+c. Come posso risolvere?

Caiodark
23-06-2008, 15:33
Dunque il thread si chiude ma il client rimane appeso...
Lo chiudi il socket prima di uscire dal thread? Perché se chiudi solo il thread il socket rimane aperto dal processo principale.

Metallica
23-06-2008, 16:20
cioè prima di pthread_exit(0) lanciare un close(filedes_socket)?

Caiodark
24-06-2008, 07:54
Sì, l'idea è quella.

Metallica
24-06-2008, 16:10
Risolto! Ora mi chiedo come posso fare a far sì che il server mandi un messaggio a tutti i client???
Un client manda un input al server, quando riceve questo input il server deve mandare a tutti i client un nuovo output.

Cosa uso? Segnali? Se sì come?

Loading