added more annotations
This commit is contained in:
parent
04c37c5078
commit
5e7049feb0
@ -12,6 +12,9 @@ template<typename T> void Consumer<T>::initClass(int numP, Monitor<T> *m, void (
|
||||
}
|
||||
//---------------------------------------
|
||||
|
||||
//Semaphore with Number of Resources -> consume N Resources
|
||||
//get spot of item in queue, take item, activate producers
|
||||
//process item
|
||||
template<typename T> void Consumer<T>::run() {
|
||||
while (numProducts.tryAcquire()) { // While not all numProducts are consumed:
|
||||
T* aux = mon->canGet(); // Get pointer to item in itemQ
|
||||
|
@ -61,7 +61,7 @@ int main(int argc, char *argv[]) {
|
||||
c[i]->start();
|
||||
}
|
||||
|
||||
|
||||
//make finished threads wait?
|
||||
for (int i = 0; i < N; i++)
|
||||
p[i]->wait();
|
||||
for (int i = 0; i < M; i++)
|
||||
|
@ -31,8 +31,8 @@ T* Monitor<T>::canPut() {
|
||||
|
||||
//consumer tries to take an item:
|
||||
// lock l
|
||||
// push produced item to itemQ
|
||||
// wake waiting consumer
|
||||
// wait until items are in itemq
|
||||
// take item
|
||||
template<typename T>
|
||||
T* Monitor<T>::canGet() {
|
||||
QMutexLocker ml(&l); // Lock entry controlling mutex l
|
||||
@ -56,6 +56,10 @@ void Monitor<T>::donePutting(T *x) {
|
||||
}
|
||||
//-----------------------------------------
|
||||
|
||||
//consumer is done with taking an item:
|
||||
// lock l
|
||||
// enlarge producer queue by one
|
||||
// notify a producer of new spot
|
||||
template<typename T>
|
||||
void Monitor<T>::doneGetting(T *x) {
|
||||
QMutexLocker ml(&l); // Lock entry controlling mutex l
|
||||
|
@ -13,6 +13,9 @@ template<typename T> void Producer<T>::initClass(int numP, Monitor<T> *m, T(*pro
|
||||
}
|
||||
//---------------------------------------
|
||||
|
||||
//Semaphore with Number of Resources -> create N Resources
|
||||
//produce item -> get spot in queue -> put item into second queue
|
||||
//activate consumers
|
||||
template<typename T>
|
||||
void Producer<T>::run() {
|
||||
while (numProducts.tryAcquire()) { // While not all numProducts items are produced:
|
||||
|
Loading…
Reference in New Issue
Block a user