threads y condición
![Nota Nota](https://perlenespanol.com/foro/styles/prosilver/imageset/icon_post_target.gif)
Hola a todos. Tengo nuevamente problema de threads.
Primero les dejo una prueba de concepto para tratar de entender mejor.
Ok, el objetivo de este código es contar en qué posición se encuentra un objeto.
Este array es el que chequea, en dónde quiero que, cuando sea distinto a 12, los hilos dejen de trabajar y retorne la posición en la que se encuentra.
El problema es que retorna otro valor :S , que no es el de la condición
Esta es la salida:
Quiero que me devuelva en este caso 10...
Ojalá se entienda lo que trato de decir (no soy bueno explicando) ¡Saludos!...
Primero les dejo una prueba de concepto para tratar de entender mejor.
Using perl Syntax Highlighting
- #!/usr/bin/perl
- use threads;
- system'clear';
- my@SALIDA : shared=(12,12,12,12,12,12,12,12,12,12,15);
- $THREAD_NUM_COLUMN = 5;
- for(0 .. $THREAD_NUM_COLUMN-1) {
- push @threads, threads->create(\&CHECKING);
- }
- sleep(1);
- foreach $THREAD_FOR (@threads){
- #print"finalizado ".$THREAD_FOR->tid() , "\n"; ##DEBUG
- $OUT_NUMBER= $THREAD_FOR->join();
- }
- print"RETORNADO: $OUT_NUMBER\n";
- sub CHECKING{
- my@NUMBER_ARRAY : shared=(0..100);
- $TID_COLUMN = threads->tid();
- $I = $TID_COLUMN - 1;
- while ( $I < @NUMBER_ARRAY ) {
- $INT_COLMN = $NUMBER_ARRAY[$I];
- $COMPARA = $SALIDA[$I];
- print"NUMERO: $INT_COLMN => HILO N°: $I => COMPARA: $COMPARA\n"; ##DEBUG
- sleep(2);
- $I += $THREAD_NUM_COLUMN;
- last if($COMPARA != 12);
- #print"SALIDA: $INT_COLMN\n";
- }
- return$INT_COLMN;
- }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Ok, el objetivo de este código es contar en qué posición se encuentra un objeto.
Using perl Syntax Highlighting
my@SALIDA : shared=(12,12,12,12,12,12,12,12,12,12,15);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Este array es el que chequea, en dónde quiero que, cuando sea distinto a 12, los hilos dejen de trabajar y retorne la posición en la que se encuentra.
Using perl Syntax Highlighting
El problema es que retorna otro valor :S , que no es el de la condición
Using perl Syntax Highlighting
Esta es la salida:
Using text Syntax Highlighting
NUMERO: 0 => HILO N°: 0 => COMPARA: 12
NUMERO: 1 => HILO N°: 1 => COMPARA: 12
NUMERO: 2 => HILO N°: 2 => COMPARA: 12
NUMERO: 3 => HILO N°: 3 => COMPARA: 12
NUMERO: 4 => HILO N°: 4 => COMPARA: 12
NUMERO: 5 => HILO N°: 5 => COMPARA: 12
NUMERO: 6 => HILO N°: 6 => COMPARA: 12
NUMERO: 7 => HILO N°: 7 => COMPARA: 12
NUMERO: 8 => HILO N°: 8 => COMPARA: 12
NUMERO: 9 => HILO N°: 9 => COMPARA: 12
NUMERO: 10 => HILO N°: 10 => COMPARA: 15
NUMERO: 11 => HILO N°: 11 => COMPARA:
NUMERO: 12 => HILO N°: 12 => COMPARA:
NUMERO: 13 => HILO N°: 13 => COMPARA:
NUMERO: 14 => HILO N°: 14 => COMPARA:
RETORNADO: 14
NUMERO: 1 => HILO N°: 1 => COMPARA: 12
NUMERO: 2 => HILO N°: 2 => COMPARA: 12
NUMERO: 3 => HILO N°: 3 => COMPARA: 12
NUMERO: 4 => HILO N°: 4 => COMPARA: 12
NUMERO: 5 => HILO N°: 5 => COMPARA: 12
NUMERO: 6 => HILO N°: 6 => COMPARA: 12
NUMERO: 7 => HILO N°: 7 => COMPARA: 12
NUMERO: 8 => HILO N°: 8 => COMPARA: 12
NUMERO: 9 => HILO N°: 9 => COMPARA: 12
NUMERO: 10 => HILO N°: 10 => COMPARA: 15
NUMERO: 11 => HILO N°: 11 => COMPARA:
NUMERO: 12 => HILO N°: 12 => COMPARA:
NUMERO: 13 => HILO N°: 13 => COMPARA:
NUMERO: 14 => HILO N°: 14 => COMPARA:
RETORNADO: 14
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Quiero que me devuelva en este caso 10...
Ojalá se entienda lo que trato de decir (no soy bueno explicando) ¡Saludos!...