Anuncios

Bienvenidos sean a este post, en nuestros posts anteriores hemos visto como crear un tipo array de booleano y como con distintos mecanismos hemos perfeccionado al mismo.

Anuncios
Anuncios

Pero lo mas particular de ello fue que en ningun momento debimos preocuparnos sobre la administracion de recursos, estos arrays solo necesitan memoria, cada userdata representa un array que tiene su propia memoria, la cual es administrada por Lua, cuando un array se convierte en basura (inaccesible por el programa), Lua eventualmente lo recolecta y libera su memoria.

Aunque la vida no es siempre tan facil, algunas veces un objeto necesita otros recursos ademas de la memoria pura, tales como descriptores de archivos, manejadores de ventanas y similares, a menudo estos recursos son memoria tambien pero manejados por alguna otra parte del sistema, en tales casos cuando el objeto se convierte en basura y es recogido de alguna forma estos otros recursos deben ser liberados tambien, muchos lenguajes orientados a objetos proveen un mecanismo especifico (llamado finalizador) para esta necesidad, Lua provee finalizadores en la forma del metametodo __gc, este metametodo trabaja solo para valores de userdata.

Anuncios

Cuando un userdata esta por ser recogido y su metatabla tiene un campo __gc, Lua llama el valor de este campo, el cual deberia ser una funcion, pasando como un argumento al userdata en si mismo, para que esta funcion pueda liberar cualquier recurso asociado con este userdata.

Anuncios

Para ilustrar el uso de este metametodo y el de la API como un todo, en los proximos posts desarrollaremos dos enlaces desde Lua a aplicaciones externas, el primer ejemplo es implementacion para para que una funcion atraviese un directorio; el segundo, y mas sustancioso, ejemplo es un enlace a Expat, un XML parse de tipo Open source.

Anuncios

En resumen, hoy hemos visto una breve introduccion a administracion de recursos, como trabaja, para que se usa, porque se usa, como podemos utilizar un metametodo en particular, su accion sobre el programa, 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