cancelar uma operação de bloqueio no Go

Eu tenho uma operação de bloqueio em uma biblioteca de terceiros que não controle. Pode potencialmente durar para sempre. Então, eu quero definir um tempo limite para isso. A maneira óbvia é envolvê-lo com um canal e uma goroutine e depois selecionar o resultado comtime.After. No entanto, o problema é que a goroutine executando a operação de bloqueio pode durar uma eternidade.

Aqui está um exemplo para ilustrar issohttp://repl.it/90o

Existe uma maneira de cancelar uma goroutine ou coletar o lixo?

questionAnswers(2)

yourAnswerToTheQuestion