Anuncios

Bienvenidos sean a este post, empecemos con una tragica noticia como es que Lua no soporta los multiprocesos (multithreading) 😱

Anuncios
Anuncios

Es decir que son procesos preventivos que comparten una memoria, hay dos razones para esta falta de soporte:

  • La primera es que ANSI C no la ofrece y por esto no hay una forma portable de implementar este mecanismo en Lua.
  • La segunda y mas fuerte razon es que los desarrolladores no piensan que el multiproceso sea una buena idea para Lua.

El multiproceso fue programada para lenguajes de bajo nivel, los mecanismos de sincronizacion como los semaforos y monitores fueron propuestos en el contexto de sistemas operativos (y programadores experimentados), no programas de aplicaciones, es muy dificil encontrar y corregir errores relacionados al multiproceso y algunos de estos errores pueden llevar a fallas de seguridad, ademas el multiproceso podria derivar en serios problemas de performance ante la necesidad de sincronizacion en algunas partes criticas del programa, tal como el asignador de memoria.

Anuncios

Los problemas con el multiproceso surgen de la combinacion de procesos preventivos y la memoria compartida, asi que podemos evitarlos usando procesos no preventivos o no compartiendo memoria, Lua ofrece soporte para ambos.

Anuncios

Los procesos de Lua (tambien conocidos como corutinas) son colaborativas y por lo tanto evitan el problema creado por el impredecible intercambio de procesos, los estados de Lua no comparten memoria y por lo tanto forman una buena base para la concurrencia en Lua, en los proximos posts iremos cubriendo estas dos opciones.

Anuncios

En resumen, hoy hemos visto un poco sobre subprocesos (threads) y estados (states) en Lua, sus pros y sus contras, porque no se aplican en este lenguaje, y como se sustituyen, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00