Título: Hilos Publicado por: digimikeh en 8 Julio 2020, 04:29 am Buenas noches...
Entiendo a modo muy general el tema de los hilos... Al ejecutar el programa no está ejecutando ambos hilos al mismo tiempo, sino que ejecuta h1, espera a que termine y luego ejecuta h2... como logro que se ejecuten ambos a la vez?, entiendo que debo usar mutex para que no haya resultado inesperado con std::cout lo tengo en cuenta.. pero independiente de eso, mi objetivo es ejecutar los dos hilos a la vez. Saludos y gracias. Código: #include <iostream> Título: Re: Hilos Publicado por: ThunderCls en 8 Julio 2020, 05:13 am Exactamente el objetivo que persiguen los hilos es lograr una ejecucion concurrente (varias porciones de codigo ejecutandose al "mismo tiempo"). std::thread::join es una funcion que se usa para bloquear el hilo en la linea desde la cual es llamada y esperar a que el hilo al que se esta "joining" termine la ejecucion antes de continuar con el resto de la funcion principal. En este caso creo que es lo opuesto a lo que deseas hacer, o sea ejecutar dos porciones de codigo simultaneamente.
En tu caso moviendo h1.join(); justo despues de h2.join(); garantiza que ambos hilos se ejecuten concurrentemente. La funcion main a su vez espera que ambos concluyan antes de terminar su ejecucion. Si te vas a adentrar en el tema de la programacion concurrente te aconsejo empezar conociendo conceptos basicos como: secciones criticas, race conditions, deadlocks, livelock, exclusion mutua (semaforos, mutex, etc) Saludos Título: Re: Hilos Publicado por: digimikeh en 9 Julio 2020, 02:17 am Hola!
gracias por la respuesta... Efectivamente ahi corrieron los dos hilos simultaneamente... Aprovecho la instancia para preguntar: Por qué en Linux este codigo no funciona? El mensaje que obtengo del compilador es: /usr/include/c++/8/thread:127: error: undefined reference to `pthread_create' Saludos y agradecido nuevamente. Título: Re: Hilos Publicado por: ThunderCls en 9 Julio 2020, 13:56 pm Asegúrate que estas compilando con -pthread
Título: Re: Hilos Publicado por: digimikeh en 9 Julio 2020, 17:19 pm Actualmente utilizo Qt Creator como IDE por lo que tengo que buscar en alguna parte donde meter el flag.. Gracias estimado por la gran ayuda.. Saludos cordiales. |