Citar
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 la 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 de la función del hilo, el primer parámetro correspondel 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.
IDMUTEX Variable que identifica a un mutex
CREARHILO(handle,funcion,parametro) Crea un hilo de ejecución, el primer parámetro corresponde a la 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 de la función del hilo, el primer parámetro correspondel 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)).