elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Hilos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Hilos  (Leído 3,377 veces)
digimikeh

Desconectado Desconectado

Mensajes: 191


Ver Perfil
Hilos
« 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>
#include <thread>

int main(){
    std::thread h1(
                [](){ for (short x{0}; x != 11; ++x) std::cout << x << std::endl; }
    );
    h1.join();
   
    std::thread h2(
                [](){ for (short x{90}; x != 101; ++x) std::cout << x <<std::endl; }
                );
    h2.join();

    return 0;
}


En línea

Dungeons & dragons;
dragons.Attack();
ThunderCls


Desconectado Desconectado

Mensajes: 455


Coder | Reverser | Gamer


Ver Perfil WWW
Re: Hilos
« Respuesta #1 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


En línea

-[ "…I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/
digimikeh

Desconectado Desconectado

Mensajes: 191


Ver Perfil
Re: Hilos
« Respuesta #2 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.
En línea

Dungeons & dragons;
dragons.Attack();
ThunderCls


Desconectado Desconectado

Mensajes: 455


Coder | Reverser | Gamer


Ver Perfil WWW
Re: Hilos
« Respuesta #3 en: 9 Julio 2020, 13:56 pm »

Asegúrate que estas compilando con -pthread
En línea

-[ "…I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/
digimikeh

Desconectado Desconectado

Mensajes: 191


Ver Perfil
Re: Hilos
« Respuesta #4 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.
En línea

Dungeons & dragons;
dragons.Attack();
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hilos en C
Programación C/C++
mapers 2 6,366 Último mensaje 13 Junio 2011, 10:21 am
por mapers
Hilos C « 1 2 »
Programación C/C++
<<<-Basura->>> 10 6,156 Último mensaje 27 Febrero 2013, 17:53 pm
por <<<-Basura->>>
Hilos
Programación C/C++
yabadabadu93 0 1,594 Último mensaje 8 Diciembre 2015, 11:55 am
por yabadabadu93
Hilos en c++
Programación C/C++
Roast D 3 2,564 Último mensaje 1 Febrero 2017, 20:45 pm
por ivancea96
creando hilos en windows
Programación C/C++
tecnobyte 1 8,524 Último mensaje 15 Enero 2021, 20:18 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines