Olivia_v2017/Olivia/OlvAsync_cola.h

44 lines
820 B
C++

#pragma once
#include "th_cola.h"
template <typename T>
class DataOlvAsync_cola{
public:
int id;
T data;
};
template <typename P>
class OlvAsync_cola : public Cth_cola<DataOlvAsync_cola<P>>
{
void (*func_proc)( int, OlvAsync_cola<P>*, P *);
public:
OlvAsync_cola(void){};
~OlvAsync_cola(void){};
void inicia(int miliseconds,void (*func)( int, OlvAsync_cola<P>*, P *), int fin =-1, char* nombre=NULL)
{
func_proc =func;
time_sleep = miliseconds;
pirate=FALSE;
lanza(nombre);
}
virtual void procesa(DataOlvAsync_cola<P> &t)//override de procesado que hay que sobreescribir
{
func_proc(t.id,this,&t.data);
};
void encola(int tarea, P *argumentos, BOOL forzar)
{
DataOlvAsync_cola<P> t;
t.id = tarea;
if(argumentos)
t.data = *argumentos;
(*this)+t;
}
void termina()
{
fin();
}
};