Golang bloqueo y no bloqueo
Estoy algo confundido sobre cómo Go maneja las IO sin bloqueo. La mayoría de las API me parecen sincrónicas, y cuando veo presentaciones en Go, no es raro escuchar comentarios como "y los bloqueos de llamadas"
¿Go utiliza el bloqueo de E / S cuando lee archivos o redes? ¿O hay algún tipo de magia que reescribe el código cuando se usa desde dentro de una rutina de rutina?
Viniendo de un fondo de C #, esto se siente muy poco intuitivo, en C # tenemos elawait
palabra clave al consumir API asíncronas. Lo que comunica claramente que la API puede generar el hilo actual y continuar más tarde dentro de una continuación.
Entonces TLDR; ¿Bloqueará Go el subproceso actual al hacer IO dentro de una rutina Go, o se transformará en un C # como async aguardará la máquina de estado usando continuaciones?