Mi sono imbattuto in una situazione in cui voglio tracciare qualche goroutine da sincronizzare su un punto specifico, ad esempio quando vengono caricati tutti gli url. Quindi, possiamo metterli tutti e mostrarli in ordine specifico.Come implementare un timeout quando si utilizza sync.WaitGroup.wait?
Penso che questa sia la barriera entrata. È in go
con sync.WaitGroup
. Tuttavia, in una situazione reale, non possiamo assicurarci che tutte le operazioni di recupero riusciranno in breve tempo. Quindi, voglio introdurre un timeout quando wait
per le operazioni di recupero.
Sono un novellino a Golang
, quindi qualcuno può darmi qualche consiglio?
Quello che sto cercando è come questo:
wg := &sync.WaigGroup{}
select {
case <-wg.Wait():
// All done!
case <-time.After(500 * time.Millisecond):
// Hit timeout.
}
So Wait
non supportano Channel
.
potete inserire come tu sei l'aggiunta di gruppi attesa e roba come stai facendo attraverso un loop o ?? – Datsik
Possibile duplicato di [Timeout per WaitGroup.Wait()] (http://stackoverflow.com/questions/32840687/timeout-for-waitgroup-wait) – jab