You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Attualmente ogni volta che un pacchetto viene ricevuto questo viene mandato sequenzialmente a tutti gli stream aperti. Il problema è che se l'operazione di send è bloccante (per qualsiasi motivo, e.g. buffer TCP pieno) il loop si ferma e tutti gli altri clienti smettono di ricevere traffico.
Una soluzione potrebbe essere creare una pool di worker con il package ants1 e ogni volta submittare alla pool un job per inviare ad un SINGOLO client un SINGOLO pacchetto.
Essendo un passaggio per ref (del pacchetto) questo non dovrebbe comportare troppo overhead aggiuntivo. All'interno della coroutine mettere poi dei timeout ed eventualmente chiudere la connessione e liberare le risorse associate.
Un'altra soluzione considerata era quella di una creare coroutine per canale, ma sarebbe necessaria più coordinazione per chiudere i canali.
Attualmente ogni volta che un pacchetto viene ricevuto questo viene mandato sequenzialmente a tutti gli stream aperti. Il problema è che se l'operazione di send è bloccante (per qualsiasi motivo, e.g. buffer TCP pieno) il loop si ferma e tutti gli altri clienti smettono di ricevere traffico.
Una soluzione potrebbe essere creare una pool di worker con il package
ants
1 e ogni volta submittare alla pool un job per inviare ad un SINGOLO client un SINGOLO pacchetto.Essendo un passaggio per ref (del pacchetto) questo non dovrebbe comportare troppo overhead aggiuntivo. All'interno della coroutine mettere poi dei timeout ed eventualmente chiudere la connessione e liberare le risorse associate.
Un'altra soluzione considerata era quella di una creare coroutine per canale, ma sarebbe necessaria più coordinazione per chiudere i canali.
Footnotes
https://github.com/panjf2000/ants ↩
The text was updated successfully, but these errors were encountered: