Ho un'operazione di blocco in una libreria di terze parti che non controllo. Potrebbe potenzialmente andare per sempre. Quindi voglio impostare un timeout su di esso. Il modo ovvio è di avvolgerlo con un canale e una goroutine e quindi selezionare il risultato con time.After
. Tuttavia, il problema è che la goroutine che esegue l'operazione di blocco potrebbe potenzialmente andare per sempre.annullare un'operazione di blocco in Go
Ecco un esempio per illustrare questo http://repl.it/90o
C'è un modo per annullare una goroutine o far garbage collection?
La libreria di terze parti è open source? Forse puoi aggiustarlo per loro e inviare una richiesta di pull. – tgrosinger