Mutex, semáforos, eventos

/*
Quiero
MEDIANTE mutex, semáforos, eventos sincronizar:
*/
main(){
....
for(i=0;i<N_HILOS;i++)CreateThread(...,controlTemperatura,...)
do{
/*
código de sincronización para evitar
solapamiento al escribir en tabla.
*/
////////// región crítica
escribirEnTabla();
//////////
...
}while(!salir);
}
/*
la función controlTemperatura es de código igual para los N hilos creados:
*/
DWORD WINAPI controlTemperatura(void*p){
/*
do{
/*
código de sincronización para evitar
solapamiento al leer de tabla.
*/
////////// región crítica
leerDeTabla();
//////////
...
}while(!salir);
/*
Mientras se escribe en tabla no se puede leer de tabla y viceversa.
Si uno de los N hilos está leyendo,
tampoco pueden leer los otros.
Quiero saber el código de esas sincronizaciones sin que me de errores.
*/

2 respuestas

Respuesta
1
Antes de entrar a la secció crítica crea un mutex:
HANDLE mutex;
mutex = CreateMutex(0, FALSE, 0);
Luego bloqueas bloqueas el mutex con el primero hilo que entra, los restantes tendrán que esperar:
WaitForSingleObject(mutex, INFINITE)
Luego de escribir en la tabla, liberamos el mutex:
ReleaseMutex(mutex)
Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas