Olivia_v2017/includes/Utiles/lock.h

29 lines
693 B
C++

#pragma once
#include "base_head.h"
#define CLOCK_ESTADO_BLOQUEADO 1
#define CLOCK_ESTADO_DESBLOQUEADO 0
class UTILES_EXPORT Clock//estructura para concurrencia
{
public:
long t_sleep;//tiempo de sleep en milisegundos
Clock(void);
~Clock(void);
void entro();//pilla el cerrojo durmiendo si es necesario
void salgo();//libera el cerrojo
BOOL puedo();//intenta pillar el cerrojo, si ya estaba pillado devuelve false si no true
private:
long volatile cerrojo;//variable volatile
long cliente;//id del thred que tiene el cerrojo
CRITICAL_SECTION cerrojo1;
int modo;//indica si usa cerrojo 0 o 1
};
UTILES_EXPORT long lck_sum_atm(long *n,int i);//suma de manera atomica i a n