Programación General > C/C++
Usar hilos pthreads en c++ para este caso
afrojene:
Hola, estoy realizando un programa que busca puntos característicos en imágenes y luego busca las correspondencias entre ambas.
El caso es que quiero aumentar la velocidad de ejecución y para ello necesito utilizar hilos pero no se como pasar los atributos ni nada!
Lo que intento hacer es lanzar la busqueda de puntos caracteristicos de cada imagen cada una en un hilo.
Aqui les dejo el proceso sin hilos:
Código:
--- Código: C++ --- Procesado P; //Declaración de un objeto donde //estan las funciones de busqueda Image* ImLeft, ImRight; //Declaracion de Imagenes vector<double> ptsLeft, ptsRight; //Vectores donde almacenar los puntos P.getPoints(ImLeft, ptsLeft); //Funciones de busqueda que quieroP.getPoints(ImrRight, ptsRight); //lanzar cada una en un hilo La función getPoints():
Código:
--- Código: C++ --- void getPoints(Image* Im, vector<double> &pts);
Por favor si alguien entiende de hilos pthreads y sepa como lanzar las funciones pasando los parametros que me heche una mano porque yo no lo consigo!!
Muchas gracias Question
m0skit0:
¿Cómo lo haces para que no te funcione con hilos?
afrojene:
Hola, gracias por contestar. No me funciona porque no se como puedo pasar los parámetros a las funciones a través de los hilos..
Sabrias explicarme como debo hacer??
Muchas gracias
diego.martinez:
si no me equivoco , al generar los hilos tienes un parametro de tipo void* que se le va a pasar al hilo.
Entonces te preparas una estructura o buffer y se lo pasas en ese parametro.
--- Código: C++ --- pthread_create(&hilo0, NULL, (void *) &mis_datos_parametro, (void *) &id0);
yo suelo usar el _beginthread de windows entonces no se exactamente si funcionan igual , pero por lo que he ojeado por internet es parecido.
m0skit0:
Primero, especificarte que a un hilo POSIX sólo le puedes pasar un argumento, así que la función getPoints() deberá llamarse desde otra que será la principal del hilo.
Para crear un hilo, debes usar pthread_create(), cuyo prototipo es
--- Código: Text ---int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void*), void *restrict arg); La función devuelve 0 si el hilo se creó correctamente. En cuanto a los argumentos, thread es un valor de vuelta con el ID del hilo creado, attr son los atributos del hilo a crear (puedes pasar NULL para usar los atributos por defecto), start_routine es la función de entrada del hilo y arg el argumento único que recibe la función de entrada del hilo.
https://computing.llnl.gov/tutorials/pthreads/
Navegación
[#] Página Siguiente
Ir a la versión completa