-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathservmt.h
46 lines (37 loc) · 1.02 KB
/
servmt.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#ifndef __SERVMT_H
#define __SERVMT_H
#include "atomic.h"
class ServMT: public Atomic {
public:
//Constructores
ServMT(const string &name = "ServMT");
enum Estado {transductor_in, terminando, cambio_de_contexto, procesando, interrumpido};
protected:
//funciones de transicion externa, interna y de output y de inicializacion
Model& initFunction();
Model& externalFunction(const ExternalMessage&);
Model& internalFunction(const InternalMessage&);
Model& outputFunction(const CollectMessage&);
void holdIn(ServMT::Estado, const VTime&);
private:
//puertos de entrada
const Port ∈
const Port &doneES;
//puertos de salida
Port &done;
Port &solved;
Port &out;
//vairables de estado
int cant_threads_libres;
Value id_trabajo_actual;
Value id_trabajo_finalizado;
Estado S;
Estado S_ant;
VTime t_remanente;
VTime t_comienzo;
//parametros
int max_threads;
VTime tiempo_cambio_de_contexto;
VTime tiempo_CPU;
};
#endif __SERVMT_H