[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