Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/11/2009, 09:36
AlbertoMadrid
 
Fecha de Ingreso: octubre-2006
Mensajes: 13
Antigüedad: 18 años, 4 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
    }