ufaria escribió:
La verdad es que este tema de los hilos en Perl está poco pulido
comparándolo con otros lenguajes. Bueno, es lo que hay.
Al revés, al menos en lo que concierne a lenguajes de
script, Perl es de los que mejor lo llevan.
Por ejemplo, Python y Ruby (al menos hasta donde yo sé) solo soportan un modelo similar al de Coro y solo son capaces de utilizar un procesador a la vez.
El problema de fondo es una cuestión de implementación: la representación interna que usan estos lenguajes para los datos (escalares,
hashes,
arrays, etc.) son estructuras complejas y las operaciones que se realizan sobre ellas distan mucho de ser atómicas a nivel de procesador así que si dos
threads tratan de acceder al mismo dato es muy probable que el segundo
thread se encuentre la estructura interna del dato en un estado inconsistente y todo acabe en un
core dump.
Con la implementación de
threads de Perl 5.005 se llegó bastante lejos, pero al final los
perl porters llegaron a la conclusión de que nunca conseguirían solucionar todos los problemas y lo discontinuaron tirando por el modelo de 5.6 que a nivel de programación en Perl es un asco, pero que al menos no se cuelga y tiene soporte para multiproceso real.