RetroDev
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Librería Hilos

2 participantes

Ir abajo

Librería Hilos Empty Librería Hilos

Mensaje por amchacon Miér Jul 10, 2013 10:34 am

La estuve haciendo para el Pacman, es una especie "abstracción" con macros para poder usar hilos de forma multiplataforma. La cuelgo aquí por si alguien le interesa:

IDTHREAD Variable que identifica a un thread
IDMUTEX Variable que identifica a un mutex

CREARHILO(handle,funcion,parametro) Crea un hilo de ejecución, el primer parámetro corresponde a su variable ID, el segundo parámetro al nombre de la función y el tercero al parametro que se pase (NULL si no se pasa ninguno)
CREARMUTEX(nombre) Inicializa un mutex

HILO(nombre,parametro) Prototipo para declarar la función, el primer parámetro corresponde al nombre de la función y el segundo corresponde al nombre del parametro

LOCKMUTEX(nombre) Bloquea un mutex
UNLOCKMUTEX(nombre) Desbloquea un mutex

JOIN(handle) Espera hasta la finalización de un determinado hilo.

Librería (copiar y pegar):

Código:
#ifdef WINDOWS
#include <windows.h>
#else
#include <pthread.h>
#endif

#ifdef WINDOWS

#define IDTHREAD HANDLE
#define IDMUTEX HANDLE

#define CREARHILO(handle,funcion,parametro)  handle = CreateThread(NULL,0,funcion,parametro,0,NULL);
#define CREARMUTEX(nombre) nombre = CreateMutex(NULL,FALSE,NULL);
#define HILO(nombre,parametro) DWORD WINAPI nombre ( LPVOID parametro)
#define LOCKMUTEX(nombre) WaitForSingleObject(nombre,INFINITE);
#define UNLOCKMUTEX(nombre) ReleaseMutex(nombre);

#define JOIN(nombre) WaitForSingleObject(nombre,INFINITE);

#else
#define IDTHREAD pthread_t
#define IDMUTEX pthread_mutex_t

#define CREARHILO(& handle,funcion,parametro) pthread_create(handle,NULL,funcion,parametro);
#define CREARMUTEX(nombre)  pthread_mutex_init (nombre, NULL);
#define HILO(nombre,parametro) void* Nombre(void* parametro)
#define LOCKMUTEX(nombre) pthread_mutex_lock(nombre);
#define UNLOCKMUTEX(nombre) pthread_mutex_unlock(nombre);

#define JOIN(nombre) pthread_join(nombre,NULL);

#endif

Nota Windows: Hay que poner el define WINDOWS (en Codeblocks, tienes que irte a project -> build options -> #defines -> Escribir WINDOWS).
Nota Linux: Hay que enlazar con la librería pthread (en Codeblocks tienes que irte a project -> build options -> linker settings -> pthread (columna de la izquierda)).
amchacon
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Librería Hilos Empty Re: Librería Hilos

Mensaje por dato000 Jue Jul 11, 2013 1:59 pm

Me gustaria decir que gracias, pero no entendi nada de nada XDDD

vi el post del hacker.net, de la duda de funciones, a todas estas, cual era el proposito?? la IA de los fantasmas??
dato000
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Librería Hilos Empty Re: Librería Hilos

Mensaje por amchacon Sáb Jul 13, 2013 9:49 pm

Los hilos son funciones que se ejecutan simultaneamente. Es muy util en la programacion de videojuegos, en el Pacman tengo un hilo que mueve el Pacman, otro que mueve la IA y el main refresca la pantalla.
amchacon
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Librería Hilos Empty Re: Librería Hilos

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.