-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMintika.h
94 lines (61 loc) · 2 KB
/
Mintika.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//
// Created by lutfullah on 04.05.2022.
//
#ifndef ODTU_OS_ODEV_2_MINTIKA_H
#define ODTU_OS_ODEV_2_MINTIKA_H
#include "hw2_output.h"
#include "Er.h"
#include "TutunTutturucu.h"
#include <vector>
#include <iostream>
#include "HataAyiklama.h"
#include <pthread.h>
struct TutturucuKonumu;
struct TutunTutturucu;
struct MintikaHucresi {
int izmaritSayisi;
pthread_mutex_t temizleniyorKilidi;
pthread_mutex_t tutturucuVarKilidi;
pthread_mutex_t tutturuluyorKilidi;
pthread_cond_t tutturucuKalmadiVeyaMolaCond;
pthread_cond_t temizlikBirakildiCond;
pthread_mutex_t izmaritEklemeKilidi;
Er *temizlikci;
std::vector<TutunTutturucu *> tutturuculer;
MintikaHucresi(int izmaritSayisi, bool temizleniyor, std::pair<int, int> &kordinat);
int tutturucuSayisi;
std::pair<int, int> kordinat;
bool temizleniyor;
virtual ~MintikaHucresi();
bool tutturuluyor();
void temizligiBirak();
void tutturucuTerketsin(TutunTutturucu &tutturucu);
void tutturucuGelsin(TutunTutturucu &tutturucu);
void izmaritEkle();
void temizliginBitmesiniBekle();
void tutturuculerinGitmesiniBekle(Mintika &mintika);
bool temizleniyordur();
void setTemizleniyor(bool b);
};
struct Mintika {
bool molada, durEmriGeldi;
pthread_cond_t emirCond;
pthread_mutex_t emirKilidi;
pthread_cond_t erSayisiCond;
pthread_mutex_t erSayisiKilidi;
std::vector<std::vector<MintikaHucresi>> mintika;
// erSayisiKilidi korur.
int moladaErSayisi;
// erSayisiKilidi korur.
int calisanErSayisi;
explicit Mintika(std::vector<std::vector<MintikaHucresi>> &mintika);
void yazdir();
MintikaHucresi *konumBossaKilitleDoluysaIlkDoluHucreyiDon(TutturucuKonumu &konum, TutunTutturucu &tutturucu);
MintikaHucresi *kapsamBossaKilitleDoluysaIlkDoluHucreyiDon(Kapsam &kapsam, Er &er);
~Mintika();
void calisanErAzalt();
void moladaErAzalt();
void moladaErArttir();
void calisanErArttir();
};
#endif //ODTU_OS_ODEV_2_MINTIKA_H