Condivisione della connessione SCTP con più thread

1

Ho un'applicazione che deve essere eseguita in ambiente SCTP, ho una domanda nel condividere la connessione tra più thread solo per ricezione di pacchetti, ho provato con sctp_sendmsg e ha funzionato senza nemmeno bloccare i thread (è che si sta prendendo cura del sistema operativo, in altre parole, è thread sicuro per farlo). Ho provato molti casi con l'invio e non riesco a vederli fuori sincrono.

Comunque, tornando alla ricezione, è possibile creare più thread e inviare a ogni thread il descrittore sctp per iniziare a ricevere messaggi? Ho bisogno di un blocco qui o è ok senza blocco?

Sto usando C in linux.

    
posta poly 02.05.2012 - 03:41
fonte

1 risposta

1

Quindi ho creato questo programma di test rapido che crea un socket UDP e quindi esegue 2 thread di lettura e 1 thread di scrittura, tutti utilizzando lo stesso socket Ho usato nc dall'altra parte per assicurarmi che funzionasse. Non è SCTP ma è socket BSD, con cui SCTP è per lo più compatibile e su cui è basato l'API SCTP avanzato, quindi mi aspetto che il comportamento sia lo stesso.

Si comporta piuttosto bene - il thread mittente non blocca affatto, e i due thread riceventi ricevono ogni pacchetto successivo in una sequenza alternata.

Non sarei sorpreso di vedere sendmsg() funzionare senza problemi, ma se utilizzi SCTP in modalità stream e invii buffer più grandi di MTU, questo potrebbe non rimanere vero.

Ma questo è Linux, non posso dare alcuna garanzia su come si comportano gli altri SO.

    
risposta data 02.05.2012 - 09:52
fonte

Leggi altre domande sui tag