Random thread image
category: general [glöplog]
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
/* Definición de variables globales */
HANDLE g_hMutex = NULL;
/* Función correspondiente al primer hilo */
DWORD HiloUno(LPVOID p){
BOOL fDone = FALSE;
DWORD dw;
while(!fDone){
/* Esperamos a que el mútex esté libre */
if ((dw = WaitForSingleObject(g_hMutex, INFINITE)) == WAIT_OBJECT_0)
{
/* Código del hilo 1 */
/*Liberamos el mútex */
ReleaseMutex(g_hMutex);
} else {
break; /* Se ha producido un error */
}
}
return(0);
}
/* Función correspondiente al segundo hilo */
DWORD HiloDos(LPVOID p){
BOOL fDone = FALSE;
DWORD dw;
while(!fDone){
/* Esperamos a que el mútex esté libre */
if ((dw = WaitForSingleObject(g_hMutex, INFINITE)) == WAIT_OBJECT_0)
{
/* Código del hilo 1 */
/*Liberamos el mútex */
ReleaseMutex(g_hMutex);
} else {
break; /* Se ha producido un error */
}
}
return(0);
}
/* Programa principal */
int main (int argv, char *argc[]){
/*DWORD HiloUno;
DWORD HiloDos;*/
HANDLE hThread[2];
DWORD IDThread[2];
/* Creamos el mútex sin ser propietarios y sin nombre */
g_hMutex = CreateMutex(NULL, FALSE, NULL);
/* Creamos los hilos secundarios */
hThread[0] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) HiloUno,NULL,0,&IDThread[0]);
hThread[1] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) HiloDos,NULL,0,&IDThread[1]);
/* Esperamos la finalización de los hilos secundarios */
WaitForMultipleObjects(2,hThread,TRUE,INFINITE);
/* Cerramos los descriptores de los hilos */
CloseHandle(hThread[0]);
CloseHandle(hThread[1]);
/* Eliminamos el mútex */
CloseHandle(g_hMutex);
return 0;
}
#include <conio.h>
#include <windows.h>
#include <time.h>
/* Definición de variables globales */
HANDLE g_hMutex = NULL;
/* Función correspondiente al primer hilo */
DWORD HiloUno(LPVOID p){
BOOL fDone = FALSE;
DWORD dw;
while(!fDone){
/* Esperamos a que el mútex esté libre */
if ((dw = WaitForSingleObject(g_hMutex, INFINITE)) == WAIT_OBJECT_0)
{
/* Código del hilo 1 */
/*Liberamos el mútex */
ReleaseMutex(g_hMutex);
} else {
break; /* Se ha producido un error */
}
}
return(0);
}
/* Función correspondiente al segundo hilo */
DWORD HiloDos(LPVOID p){
BOOL fDone = FALSE;
DWORD dw;
while(!fDone){
/* Esperamos a que el mútex esté libre */
if ((dw = WaitForSingleObject(g_hMutex, INFINITE)) == WAIT_OBJECT_0)
{
/* Código del hilo 1 */
/*Liberamos el mútex */
ReleaseMutex(g_hMutex);
} else {
break; /* Se ha producido un error */
}
}
return(0);
}
/* Programa principal */
int main (int argv, char *argc[]){
/*DWORD HiloUno;
DWORD HiloDos;*/
HANDLE hThread[2];
DWORD IDThread[2];
/* Creamos el mútex sin ser propietarios y sin nombre */
g_hMutex = CreateMutex(NULL, FALSE, NULL);
/* Creamos los hilos secundarios */
hThread[0] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) HiloUno,NULL,0,&IDThread[0]);
hThread[1] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) HiloDos,NULL,0,&IDThread[1]);
/* Esperamos la finalización de los hilos secundarios */
WaitForMultipleObjects(2,hThread,TRUE,INFINITE);
/* Cerramos los descriptores de los hilos */
CloseHandle(hThread[0]);
CloseHandle(hThread[1]);
/* Eliminamos el mútex */
CloseHandle(g_hMutex);
return 0;
}