Funciones y bloqueo

¿Comó estan relacionados el bloqueo y la ejecución funciones?

El siguiente es un ejemplo de una función que simula la lectura de un archivo de texto bastante grande.

package main

import (
    "fmt"
    "time"
)

func leerArchivo() string {
    time.Sleep(time.Second * 5)
    return "Datos del archivo"
}

func main() {
    datos := leerArchivo()
    fmt.Println(datos)
}

Tenemos…

  • Una función llamada leerArchivo() que devuelve un string.
  • Bloqueamos la ejecución durante 5 segundos time.Sleep(time.Second * 5).
  • Retornamos el texto "Datos del archivo".

Como podemos ver esta función si bien simula un archivo bastante grande, también genera un bloqueo, es decir que mientras no se complete, no se continua con la ejecución del programa.