Lucic Nemanja
11.1.2014, 13:39
Dakle, trenutno radim na implementaciji fajl sistema za projekat na fakultetu i potrebno je da se implementira pristup fajlu po principu multiple readers - single writer i to bez izgladnjivanja bilo koga. Shodno tome našao sam ovaj (http://en.wikipedia.org/wiki/Readers-writers_problem) wiki članak koji govori o rešenjima za dati problem i opredelio sam se za treći pošto on ne izgladnjuje ni čitaoce ni pisce. Sve je to ok, algoritam mi je jasan u potpunosti, ali imam tehničkih problema.
Prilično sam noob što se tiče višenitnog programiranja i ne znam još kako funkcionišu stvari u tom domenu.
Želeo bih da napravim klasu koja će da enkapsulira svu logiku pritupa po datom principu. Gruba definicija klase bi izgledala ovako:
class RWMonitor
{
private:
int nreaders; // shared
int prev, current; // local
HANDLE waitMutex, accessMutex, cntMutex;
public:
void beginReading();
void endReading();
void beginWriting();
void endWriting();
};
Posle bih sve pozive za samu logiku čitanja i pisanja omotavao ovim metodama.
Moje pitanje je, kako se prave deljene promenljive, a kako lokalne? Ideja mi je da svaki objekat otvorenog fajla ima po jednu instancu ove klase koja bi upravljala pristupom svom fajlu.
Ne znam da li je relevantno, ali koristi se win api za višenitne funkcionalnosti.
Prilično sam noob što se tiče višenitnog programiranja i ne znam još kako funkcionišu stvari u tom domenu.
Želeo bih da napravim klasu koja će da enkapsulira svu logiku pritupa po datom principu. Gruba definicija klase bi izgledala ovako:
class RWMonitor
{
private:
int nreaders; // shared
int prev, current; // local
HANDLE waitMutex, accessMutex, cntMutex;
public:
void beginReading();
void endReading();
void beginWriting();
void endWriting();
};
Posle bih sve pozive za samu logiku čitanja i pisanja omotavao ovim metodama.
Moje pitanje je, kako se prave deljene promenljive, a kako lokalne? Ideja mi je da svaki objekat otvorenog fajla ima po jednu instancu ove klase koja bi upravljala pristupom svom fajlu.
Ne znam da li je relevantno, ali koristi se win api za višenitne funkcionalnosti.