[C con Clase] Problemas con hilos

Steven Davidson srd4121 en njit.edu
Mie Ago 1 02:10:45 CEST 2012


Hola Armando,

On 7/31/2012 7:07 PM, Armando B. VERA wrote:
> A ver si alguien me puede ayudar. Estoy probando este código pero no
> puedo compilar.
>
> He marcado la linea de error. La salida al compilar es:
>
> armando en abvera:~/PROGRAMACION/SOM$ gcc -o hilos hilos.c -pthread
>
> hilos.c: In function ‘main’:
>
> hilos.c:21: error: expected expression before ‘%’ token
>

Este mensaje te dice que hay un error en una expresión en la que 
escribes %, que viene a ser ésta:

%hilos[i]

El operador % es binario, por lo que requieres DOS operandos. El 
problema realmente es que querías usar el operador & para conseguir la 
dirección de memoria, ya que 'pthread_create()' espera un puntero a 
'pthread_t'. Esto sería,

&hilos[i]

Sin embargo, podemos usar esta expresión que optimiza un poco lo que 
queremos hacer:

hilos+i

Recuerda que un array ES una dirección de memoria, por lo que podemos 
manipularlo como un puntero.

El otro error que tienes es a la hora de pasar la función como rutina a 
invocar para el hilo que creas. La forma correcta es la siguiente,

estado = pthread_create( &hilos[i], NULL, imprimir_hola_mundo, i );

Así corregimos el error que marcaba el compilador de la falta de parámetros.

También necesitas indicar un valor de retorno para 
'imprimir_hola_mundo()'. Entiendo que la biblioteca 'pthread' no tiene 
un problema, pero sí para C++.


Espero haber aclarado el asunto.

Steven






Más información sobre la lista de distribución Cconclase