go - tesis - ¿Está bien dejar un canal abierto?
como salir de un grupo de telegram iphone (4)
Está bien dejar abierto un canal Go para siempre y nunca cerrarlo. Cuando el canal ya no se use, será basura recolectada.
Tenga en cuenta que solo es necesario cerrar un canal si el receptor está buscando un cierre. Cerrar el canal es una señal de control en el canal que indica que no hay más datos a continuación.
¿Está bien dejar abierto un canal Go para siempre (nunca cerrar el canal) si nunca verifico su estado? ¿Llevará a pérdidas de memoria? ¿Está bien el siguiente código?
func (requestCh chan<- Request) GetResponse(data RequestData) Response {
reply := make(chan Response)
requestCh <- Request{data: data, replyCh: reply}
return <-reply
}
Go es basura recolectada, por lo que realmente no tiene que ''liberar'' nada.
Existe la posibilidad de cerrar canales, pero se usa principalmente como - cerrar (canal) - decirle a la goroutine (o programa principal) que no se enviará nada más en ese canal.
Sí, está bien dejar el canal abierto, y de hecho es típico. Un canal abierto no constituye una referencia al objeto del canal, por lo que no impide que se recolecte basura.
Sí, está bien mantener un canal abierto. Como dice el libro de lenguaje de programación go :
No es necesario que cierre todos los canales cuando haya terminado. Solo es necesario cerrar un canal cuando es importante decirle a los goroutines receptores que se han enviado todos los datos. Un canal que el recolector de basura determina como inalcanzable tendrá sus recursos recuperados ya sea que esté cerrado o no. (No confunda esto con la operación de cierre de archivos abiertos. Es importante llamar al método Cerrar en cada archivo cuando haya terminado con él).