Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DrKillador en 1 Julio 2013, 21:18 pm



Título: Practica de threads en C con Codeblocks
Publicado por: DrKillador en 1 Julio 2013, 21:18 pm
Hi amigos,

Estoy practicando el uso de threads en ANSI C, en Windows con Codeblocks, y me da un error al compilar que no logro arreglar.

Tengo la siguiente funcion que me abre una calculadora (funciona perfectamente):

Código
  1. #include <pthread.h>
  2. void *b()
  3. {
  4.    exec("calc");
  5.    return NULL;
  6. }

Y he hecho ahora esta otra funcion para lanzar la calculadora desde una nueva hebra, para que el programa no se pare:

Código
  1. void a()
  2. {
  3.    pthread_t h1;
  4.    pthread_create(&h1, NULL, b(),NULL);
  5. }

El problema es que al compilar me da el siguiente error en la instrucción "pthread_t h1", porque creo que no encuentra el tipo de dato pthread_t:

Código
  1. main.c|15|undefined reference to `_imp__pthread_create'|

He leído por internet que tengo que añadir el flag -l al compilar, ya que estoy utilizando GCC como compilador en el Codeblocks, pero sigo con el problema...

¿Alguien sabria ayudarme?

Grax!!!


Título: Re: Practica de threads en C con Codeblocks
Publicado por: avesudra en 1 Julio 2013, 22:48 pm
Hola DrKillador , según tengo entendido y aunque nunca la usado, pthread  no está soportada nativamente por Windows  por lo que tendrás que compilar enlazando la siguiente librería Pthreads-w32 (http://sourceware.org/pthreads-win32/).

PD: No tengo mucha idea del tema pero parece ser que es eso.

¡Un saludo!


Título: Re: Practica de threads en C con Codeblocks
Publicado por: amchacon en 1 Julio 2013, 22:54 pm
Puedes también llamar a las API de windows:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682453(v=vs.85).aspx


Título: Re: Practica de threads en C con Codeblocks
Publicado por: DrKillador en 2 Julio 2013, 20:05 pm
Gracias! lo solucioné usando CreateThread de la WinAPI.

Saludos!