Bounded by N buffers;
Solution:
semaphore full =0
semaphore empty = N
semaphore mutex = 1
producer() {
while(true) {
produce()
empty.wait() //move one item from empty list taken to produce
mutex.wait() //lock
append()
mutex.signal() //release lock
full.signal() // fill the full with one more item ready for consume
}
}
consumer() {
while(true) {
full.wait() // wait for fill to be filled by producer
mutex.wait() //lock it and take away
take()
mutex.signal() //release lock
empty.signal() // one more item got empty from the buffer
consume()
}
}
No comments:
Post a Comment