Problema con hilos y semáforos
Publicado: 2012-02-03 16:29 @728
Buen día a todos, primero que nada estuve revisando el foro desde hace un par de meses y recién me registro espero me puedan ayudar.
El problema es el siguiente:
Tengo un script que funciona con threads y semáforos, el cual ejecuta una cantidad "n" de scripts de manera simultanea, en un modelo tipo productor/consumidor y es aquí donde entran los semáforos. Resulta que para prueba tengo 5 hilos ejecutándose y resulta que de vez en cuando un script se mete a uno o más hilos dejando a los demás de lado (el script se ejecuta cada 1 minuto a los 0 segundos, lo cual no debería dar problema ya que cada ejecución de script no demora más de 40 segundos; sin embargo cuando quito la ejecución cada minuto y lo dejo de continuo, el programa funciona normal) Por ejemplo:
... y así sucesivamente. A veces ejecuta bien, otras veces mal...
Espero me puedan ayudar. Gracias de antemano por la respuesta, tal vez no haya entendido muy bien cómo funcionan los semáforos. Si me dan una explicadita sería genial, ya que en la propia documentación de Perl no la entiendo bien. Gracias a todos.
El problema es el siguiente:
Tengo un script que funciona con threads y semáforos, el cual ejecuta una cantidad "n" de scripts de manera simultanea, en un modelo tipo productor/consumidor y es aquí donde entran los semáforos. Resulta que para prueba tengo 5 hilos ejecutándose y resulta que de vez en cuando un script se mete a uno o más hilos dejando a los demás de lado (el script se ejecuta cada 1 minuto a los 0 segundos, lo cual no debería dar problema ya que cada ejecución de script no demora más de 40 segundos; sin embargo cuando quito la ejecución cada minuto y lo dejo de continuo, el programa funciona normal) Por ejemplo:
Using text Syntax Highlighting
PASADA 1 (ok)
Hilo 1: script 1
Hilo 2: script 2
Hilo 3: script 3
Hilo 4: script 4
Hilo 5: script 5
PASADA 2 (ok)
Hilo 1: script 1
Hilo 2: script 2
Hilo 3: script 3
Hilo 4: script 4
Hilo 5: script 5
PASADA 3 (Mal)
Hilo 1: script 1
Hilo 2: script 2
Hilo 3: script 2
Hilo 4: script 4
Hilo 5: script 5
PASADA 4 (Mal)
Hilo 1: script 1
Hilo 2: script 2
Hilo 3: script 2
Hilo 4: script 3
Hilo 5: script 3
PASADA 5 (ok)
Hilo 1: script 1
Hilo 2: script 2
Hilo 3: script 3
Hilo 4: script 4
Hilo 5: script 5
PASADA 6 (Mal)
Hilo 1: script 4
Hilo 2: script 4
Hilo 3: script 3
Hilo 4: script 4
Hilo 5: script 1
Hilo 1: script 1
Hilo 2: script 2
Hilo 3: script 3
Hilo 4: script 4
Hilo 5: script 5
PASADA 2 (ok)
Hilo 1: script 1
Hilo 2: script 2
Hilo 3: script 3
Hilo 4: script 4
Hilo 5: script 5
PASADA 3 (Mal)
Hilo 1: script 1
Hilo 2: script 2
Hilo 3: script 2
Hilo 4: script 4
Hilo 5: script 5
PASADA 4 (Mal)
Hilo 1: script 1
Hilo 2: script 2
Hilo 3: script 2
Hilo 4: script 3
Hilo 5: script 3
PASADA 5 (ok)
Hilo 1: script 1
Hilo 2: script 2
Hilo 3: script 3
Hilo 4: script 4
Hilo 5: script 5
PASADA 6 (Mal)
Hilo 1: script 4
Hilo 2: script 4
Hilo 3: script 3
Hilo 4: script 4
Hilo 5: script 1
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
... y así sucesivamente. A veces ejecuta bien, otras veces mal...
Espero me puedan ayudar. Gracias de antemano por la respuesta, tal vez no haya entendido muy bien cómo funcionan los semáforos. Si me dan una explicadita sería genial, ya que en la propia documentación de Perl no la entiendo bien. Gracias a todos.