#ifndef MONITOR_H #define MONITOR_H #include #include #include using namespace std; const int BUFFSIZE = 100; //************************************************************ template class Monitor { private: QMutex l; QWaitCondition full, empty; // full: Condition variable for queue itemQ. // empty: Condition variable for queue emptySpotsQ. queue emptySpotsQ; // Queue of free item buffer places for items to be produced queue itemQ; // Queue of item buffer places with items to be consumed T *buffer; // Item buffer public: T* canPut(); T* canGet(); void donePutting(T *x); void doneGetting(T *x); Monitor(int n = BUFFSIZE); ~Monitor(); }; #endif // MONITOR_H