Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    214

    [C] Sincronizzazione, come individuare stalli

    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:

    codice:
    while(run){
    wait(cliente); 
    if( connect != -1){
        wait(messaggio); 
        pthread_create(); 
        pthread_detach(); 
      }
    else continue; 
    }
    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.
    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?

  2. #2
    E' un po' poco per capire.
    Ti consiglio di scaricare qualche esempio di chat per studiare il codice. Ciao ciao.

  3. #3
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Non fare la wait sul client !! Puoi gestire più client contemporaneamente se nel ciclo rimuovi la wait, poi ogni volta che c'è una nuova connessione crei un nuovo thread.Quel thread si occupa del client, per cui non c'è bisogno di gestire un solo client alla volta.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    214
    Grazie Who I am, ho rimosso "wait(cliente)" e ora le comunicazioni avvengono regolarmente!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.