#include "BoundedBuffer.h" void BoundedBuffer::put(int itm){ empty->wait(); mutex->wait(); a[i] = itm; i = (i + 1) % n; mutex->signal(); full->signal(); } int BoundedBuffer::get(){ full->wait(); mutex->wait(); int r = a[j]; j = (j+1) % n; mutex->signal(); empty->signal(); return r; } BoundedBuffer::BoundedBuffer(int s){ n = s; a = new int [n]; mutex = new Semaphore(1); full = new Semaphore(0); empty = new Semaphore(n); i = j = 0; }