AYUDA: Practicando con hilos en Windows

Iniciado por t4r0x, 20 Febrero 2015, 03:24 AM

0 Miembros y 1 Visitante están viendo este tema.

t4r0x

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;
}

_Enko

#1
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.

Código (cpp) [Seleccionar]
(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