Hola, necesito crear thread pero por mas que busco, no encuentro algún tutorial de como funcionan e utilizan los mismos.. si alguien me podría explicar o pasarme unos links de tutoriales estaría muy agradecido!
PD: es para un programa de windows, por lo tanto no es problema usar la API de windows is es necesario.
Si utilizas C++11, tienes la clase std::thread, con un funcionamiento muy sencillo:
std::thread th(&funcion,parametro1,parametro2 /* ... */);
th.detach();
Le pasas como primer parámetro, la dirección de la función, y luego los parámetros que ha de pasarle a esa función. Desde que creas el objeto, el nuevo hilo empieza a funcionar con la función.
Tienes varias funciones, como th.join(), que deja el hilo que la llama en pausa hasta que "th" termina la función.
:/ no uso C++11, pero gracias igual.
Cita de: Ahustinkrone en 17 Junio 2014, 01:18 AM
Hola, necesito crear thread pero por mas que busco, no encuentro algún tutorial de como funcionan e utilizan los mismos.. si alguien me podría explicar o pasarme unos links de tutoriales estaría muy agradecido!
PD: es para un programa de windows, por lo tanto no es problema usar la API de windows is es necesario.
Como primero recomiendo algun libro especializado en hilos en windows, NT internals, etc y la MSDN:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684841(v=vs.85).aspx
Cita de: Ahustinkrone en 17 Junio 2014, 01:48 AM
:/ no uso C++11, pero gracias igual.
Usas un compilador antiguo?? si usas uno mínimamente actualizado tienes la opción de usar, en el peor de los casos, algunas características de C++11 sin problemas.
un ejemplo con la winapi:
#include <stdio.h>
#include <windows.h>
DWORD WINAPI hilo(LPVOID LPARAM);
int main()
{
HANDLE MiHilo;
DWORD IdDelHilo;
MiHilo=CreateThread(NULL,0,hilo,NULL,0,& IdDelHilo);
MessageBox(NULL,"2","ventana",MB_OK);
return 0;
}
DWORD WINAPI hilo(LPVOID LPARAM)
{
MessageBox(NULL,"1","ventana",MB_OK);
}