Foros del Web » Programación para mayores de 30 ;) » C/C++ »

¿Cómo ejecutar sentencias concurrentes en C++?

Estas en el tema de ¿Cómo ejecutar sentencias concurrentes en C++? en el foro de C/C++ en Foros del Web. ¡Hola! Necesito un poco de ayuda porque estoy un poco perdida con un tema. En mi programa llego a un punto en el que tengo ...
  #1 (permalink)  
Antiguo 12/11/2009, 09:02
 
Fecha de Ingreso: octubre-2006
Mensajes: 13
Antigüedad: 17 años, 6 meses
Puntos: 0
Sonrisa ¿Cómo ejecutar sentencias concurrentes en C++?

¡Hola! Necesito un poco de ayuda porque estoy un poco perdida con un tema. En mi programa llego a un punto en el que tengo que ejecutar dos sentencias, pero cada una tarda un poco y deberían ejecutarse más o menos a la vez. ¿¿Hay alguna manera de ejecutarlas de forma concurrente o paralela??
¡¡Gracias!!
Laura
  #2 (permalink)  
Antiguo 12/11/2009, 09:44
 
Fecha de Ingreso: noviembre-2009
Mensajes: 205
Antigüedad: 14 años, 5 meses
Puntos: 15
Respuesta: ¿Cómo ejecutar sentencias concurrentes en C++?

Claro que se puede, googlea por threads (hilos) y obtendrás infinidad de tutorials.
  #3 (permalink)  
Antiguo 12/11/2009, 10:18
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años
Puntos: 5
Respuesta: ¿Cómo ejecutar sentencias concurrentes en C++?

en este post nuestro amigo Eternal da informacion sobre los hilos

http://www.forosdelweb.com/f96/threads-699242/


saludos
__________________
Bienvenidos los karmas.
Quejas, sugerencias o dudas, se awantan......
  #4 (permalink)  
Antiguo 17/11/2009, 09:36
 
Fecha de Ingreso: octubre-2006
Mensajes: 13
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: ¿Cómo ejecutar sentencias concurrentes en C++?

¡Muchas gracias! El código de Eternal ha sido clave para solucionarlo. Lo duplico aquí por si a alguien le sirve:

Código:
#include <windows.h>

DWORD WINAPI Hilo(LPVOID lpParam) 
{
  MessageBox(0, "Mensaje", "Desde un hilo", 0);
  return 0;
}

void main()
{
  HANDLE hHilo = CreateThread(NULL, 0, Hilo, NULL, 0, NULL);
  WaitForSingleObject(hHilo, INFINITE);
  CloseHandle(hHilo);
  MessageBox(0, "Listo", "Desde main", 0);
}
Pero yo además necesitaba pasarle algunas variables al hilo desde el main y para eso me ha servido el siguiente código que copio aquí también. Es básicamente el mismo código pero esta vez pasándole las variables al hilo:

Primero se define la estructura que contendrá las las variables a pasar al hilo:
Código:
struct ThreadParams
{
   char character;
   int border;
};
Entonces se llama al hilo así
Código:
struct ThreadParams *params = (struct ThreadParams *)malloc(sizeof (struct ThreadParams));
params->border = 8675309;

hThread = CreateThread (NULL, 0, ThreadProc, (LPVOID)(params), 0, &dwThreadID);
Y el código del hilo:
Código:
    DWORD WINAPI ThreadProc ( LPVOID pvoid )
    {
        struct ThreadParams *params = (struct ThreadParams *)pvoid;
	
        int temp;
        temp=params->border;

        // Free the parameters
        free(lpvoid);
	return 0
    }
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:01.