Hola a todos veran estoy leyendo y experimentando con hilos y tengo problemas con este codigo, nose porque me genera una excepcion y se cierra. talvez estoy entendiendo mal de como funcionan? estoy usando el compilador de Visual studio
#include <Windows.h>
VOID WINAPI apcthread1()
{
for (ULONG i = 0; i < 5; i++)
{
printf("%u APC de hilo 1\n", i + 1);
Sleep(1000);
}
printf("terminando APC de hilo 1\n");
}
int WINAPI thread1()
{
printf("Inicio de hilo 1\n");
QueueUserAPC((PAPCFUNC)apcthread1, GetCurrentThread(), 0);
while (TRUE)
{
for (ULONG x = 0; x < 5; x++)
{
printf("%u Ejecutando hilo 1\n", x + 1);
Sleep(1000);
}
SleepEx(3000, TRUE);
}
printf("Fin de hilo 1\n");
return 0;
}
int main()
{
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)thread1, 0, 0, 0);
return 0;
}
Hola, si mal no recuerdo ThreadProc no es void, sino que trae un argumento:
CitarDWORD WINAPI ThreadProc( _In_ LPVOID lpParameter);
Tambien te recomendaria depurar el codigo y fijarte en donde ocurre la excepcion.
(LPTHREAD_START_ROUTINE)thread1
Trata de no abusar del casting, en muchas ocasiones es necesario si, pero si Thread1 estuviera correctamente definida, el casting no haria falta. El compilador protestó por algo.
Saludos