Ciao a tutti, spero di postare nella sezione adeguata. Ho sviluppato un sistema server-multiclient e sono in fase di test. Il server è un processo che istanzia un thread per gestire ogni richiesta effettuata dai vari client. Il vincolo è che solo un client per volta può essere gestito, dunque il server fa un ciclo infinito di questo genere:
I client, effettuano le due signal per svegliare il server. Se testo il tutto con due soli client, il sistema risponde correttamente. Se il numero dei client aumenta, il server si blocca "da qualche parte" e non viene più svegliato. Inserendo una stampa nel ciclo, ho notato che viene svegliato e (in maniera corretta) gestisce una sola richiesta, poi si sospende su wait(cliente), anche se gli altri clienti hanno già effettuato la signal.codice:while(run){ wait(cliente); if( connect != -1){ wait(messaggio); pthread_create(); pthread_detach(); } else continue; }
Esiste un software capace di monitorare le chiamate sui semafori, per vedere chi e cosa blocca il tutto? O avete qualche suggerimento da darmi riguardo il debugging di questo genere di applicazioni?