Server multi-thread

0

Ho scritto un programma server / client in cui sto usando 2 thread:

  • Uno per ricevere dati continuamente e
  • Altro per inviare dati mentre l'utente lo scrive sullo schermo

Problema:

Ho creato i thread ma durante l'esecuzione, il controllo rimane bloccato il filo recieving ha il loop infinito per ricevere dati e non va mai al thread di invio.

Per favore, dimmi se c'è qualche soluzione al problema.

    
posta user3032010 22.03.2013 - 13:12
fonte

1 risposta

1

Dai un'occhiata a questo tutorial per pthreads . Anche se non utilizzi i pthread, i concetti generali si applicano ancora alla libreria di threading che stai utilizzando.

In particolare, guarda la Sezione 7 per i mutex e la Sezione 8 per le variabili condizionali. A prima vista, non sembra che si stia utilizzando qualsiasi tipo di segnalazione o mutex per controllare il flusso del programma. Un thread che domina le operazioni è un segno rivelatore di quel problema.

Supponendo che stai usando una singola area per passare i dati tra i tuoi due thread, avrai bisogno di una sorta di meccanismo per controllare l'accesso su quell'area di dati. Un mutex è la via generale per risolvere questa sfida, ma puoi usare anche i semafori per controllare l'accesso.

Come alternativa e se stai usando un sistema Linux / POSIX che supporta le pipe FIFO, puoi invece usarlo. Dovrai valutare il costo dell'accesso al sistema FIFO rispetto al costo di implementazione dei mutex. Personalmente, ritengo che i FIFO siano sostitutivi di IPC (comunicazione tra processi) e non siano una grande opzione al posto di un mutex. Ma è un'alternativa e se non riesci a capovolgerti usando un mutex o un semaforo, allora i FIFO sono un'opzione.

    
risposta data 22.03.2013 - 13:50
fonte

Leggi altre domande sui tag