Dominar la programación multiproceso con Go (Golang) Udemy Descarga gratuita
El estado de ánimo en la reunión en el piso 12 de un banco de inversión internacional fue tan sombrío como parece. Los desarrolladores de la empresa discutieron la mejor manera de avanzar después de que una aplicación central crítica fallara y causara una interrupción en todo el sistema.
“Chicos, tenemos un problema serio aquí. Descubrí que la interrupción fue causada por una condición de carrera en nuestro código, introducida hace un tiempo y activada anoche”. dice Mark Adams, desarrollador senior.
La habitación se queda en silencio. Los autos fuera de las ventanas del piso al techo avanzan lenta y silenciosamente en el pesado tráfico de la ciudad. Los desarrolladores sénior comprenden de inmediato la gravedad de la situación y se dan cuenta de que ahora trabajarán día y noche para solucionar el problema y resolver el desorden en el almacén de datos. Los desarrolladores menos experimentados entienden que una condición de carrera es grave, pero no saben exactamente qué la causa y, por lo tanto, mantienen la boca cerrada.
Eventualmente, Brian Holmes, gerente de entrega, rompe el silencio con «La aplicación se ha estado ejecutando durante meses sin ningún problema, no hemos lanzado ningún código recientemente, ¿cómo es posible que el software se haya estropeado?».
Todos niegan con la cabeza y regresan a su escritorio dejando a Brian solo en la habitación, perplejo. Saca su teléfono y busca en Google «condición de carrera».
¿Suena familiar? ¿Cuántas veces ha escuchado a otro desarrollador hablar sobre el uso de subprocesos y programación concurrente para resolver un problema en particular, pero por miedo se quedó fuera de la discusión?
Este es el pequeño secreto que los desarrolladores senior nunca compartirán… La programación multiproceso no es mucho más difícil que la programación normal. Los desarrolladores tienen miedo de la programación concurrente porque piensan que es un tema avanzado con el que solo los desarrolladores altamente experimentados pueden jugar.
Esto está lejos de la verdad. Nuestras mentes están muy acostumbradas a lidiar con la concurrencia. De hecho, hacemos esto en nuestra vida cotidiana sin ningún problema, pero de alguna manera nos cuesta traducirlo en nuestro código. Una de las razones de esto es que no estamos familiarizados con los conceptos y las herramientas disponibles para administrar esta concurrencia. Este curso está aquí para ayudarlo a comprender cómo usar herramientas y conceptos de subprocesos múltiples para administrar su programación paralela. Está diseñado para ser lo más práctico posible. Comenzamos con alguna teoría sobre el paralelismo y luego explicamos cómo el sistema operativo maneja múltiples procesos e hilos. Más adelante pasamos a explicar las múltiples herramientas disponibles resolviendo problemas de ejemplo usando multithreading.
En este curso usamos el lenguaje de programación Go de Google con sus goroutines, sin embargo, los conceptos aprendidos aquí se pueden aplicar a la mayoría de los lenguajes de programación.
Todo el código de este curso se puede encontrar en githubnombre de usuario/proyecto: cutajarj/multithreadingingo