Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: t4r0x en 20 Febrero 2015, 03:24 am



Título: AYUDA: Practicando con hilos en Windows
Publicado por: t4r0x en 20 Febrero 2015, 03:24 am
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

Código:

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


Título: Re: AYUDA: Practicando con hilos en Windows
Publicado por: _Enko en 20 Febrero 2015, 15:13 pm
Hola, si mal no recuerdo ThreadProc no es void, sino que trae un argumento:

Citar
DWORD WINAPI ThreadProc(  _In_  LPVOID lpParameter);

Tambien te recomendaria depurar el codigo y fijarte en donde ocurre la excepcion.

Código
  1. (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