-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTutunTutturucu.h
53 lines (36 loc) · 1.4 KB
/
TutunTutturucu.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
47
48
49
50
51
52
53
//
// Created by lutfullah on 07.05.2022.
//
#ifndef ODTU_OS_ODEV_2_TUTUNTUTTURUCU_H
#define ODTU_OS_ODEV_2_TUTUNTUTTURUCU_H
#include <utility>
#include <vector>
#include <csignal>
#include "Mintika.h"
struct Mintika;
struct TutunTutturucu;
struct TutturucuKonumu {
TutturucuKonumu(int icilecekSigaraSayisi, const std::pair<int, int> &konum);
int icilecekSigaraSayisi;
std::pair<int, int> konum;
/**
* @param i konum merkezine gore satir indeksi -1, 0 veya 1 olabilir.
* @param j konum merkezine gore sutun indeksi -1, 0 veya 1 olabilir.
*/
MintikaHucresi &mintikaHucresiGetir(Mintika &mintika, int i, int j);
void iVeJYeKadarKilitAc(int i, int j, TutunTutturucu &tutturucu, Mintika &mintika);
};
struct TutunTutturucu {
TutunTutturucu(int sid, int tutturmeSuresiMs, const std::vector<TutturucuKonumu> &konumlar, Mintika &mintika);
int sid;
int tutturmeSuresiMs;
std::vector<TutturucuKonumu> konumlar;
Mintika &mintika;
void emirVarsaUy(TutturucuKonumu *konum = nullptr, pthread_mutex_t *dururkenAcilacakKilit = nullptr);
void konumRezerveEt(TutturucuKonumu &konum);
void rezervasyonuBitir(TutturucuKonumu &konum);
void tuttur(TutturucuKonumu &konum);
timespec izmaritAtmaZamaniHesapla();
void durEmriyseDur(TutturucuKonumu *konum=nullptr, pthread_mutex_t *dururkenAcilacakKilit = nullptr);
};
#endif //ODTU_OS_ODEV_2_TUTUNTUTTURUCU_H