De cara a la concurrencia es frecuente hacer un script que vaya lanzando hilos según sea necesario. Y no mucho menos habitual es también que tales hilos compartan algunas variables. Un ejemplo puede ser un sistema que recibe peticiones y mientras tanto las va lanzando en hilos.
A priori parece la mar de sencillo. Usando threads y threads::shared con un array o un hash se resuelve el asunto. Sin embargo si no hubiera más remedio que utilizar un hash y de más de una dimensión vendría el problema. Con shared se comparte un nivel del hash, de manera que si se tiene compartido %miscosas y se necesita ahora utilizar $miscosas{1339953221}{detalles}{algo} vamos a tener un error de vuelta del estilo invalid value for shared scalar.
Para ello hay dos soluciones posibles […] (continuar leyendo)