Todos los ejemplos que he visto hasta ahora implican bloqueo para obtener el resultado (a través del operador <-chan
).¿Cómo puedo saber si se hace una rutina, sin bloquear?
Mi enfoque actual consiste en pasar un puntero a una estructura:
type goresult struct {
result resultType;
finished bool;
}
cual el goroutine escribe sobre la terminación. Entonces es una simple cuestión de comprobar finished
siempre que sea conveniente. ¿Tienes mejores alternativas?
Lo que realmente pretendo es un sistema de ranura de señal de estilo Qt. Tengo la corazonada de que la solución se verá casi trivial (chan
s tienen lotes de potencial inexplorado), pero todavía no estoy lo suficientemente familiarizado con el lenguaje para resolverlo.
esto ya no es válido. – rog
tienes que escribir: seleccionar { caso foo: = <-ch: predeterminado: } – rog