Computer Science 322 |
Write a C program that implements the bounded buffer problem for an arbitrary number of producers and consumers and items to be processed (each specified by command-line parameters). If i items are to be processed by p producers and c consumers, each producer should produce (i)/(p) items and each consumer should consume (i)/(c) items. You may either check that these divide evenly and report an error if not, or account for the uneven division by having some producers or consumers process one extra or one fewer item.
Use POSIX threads to create your producers and consumers and use POSIX semaphores for synchronization. Your solution should avoid the busy wait from the class examples (other than any busy waiting that might takesplace inside a semaphore wait or signal operation, which is not your fault).
Write your program in a file called prodcons.c. You may (and should!) use the source code from any of the class examples as your starting point. Be sure to indicate clearly which code you borrow and which code you add or modify.
See the examples and man pages for more information on POSIX threads and POSIX semaphores. Please don't hesitate to ask questions!
This lab is graded out of 10 points.
By 2:40 PM, Monday, March 29, 2010, submit documented source code and a Makefile to allow easy compilation. All necessary files should be submitted by email to jteresco AT mtholyoke.edu.
Grading Breakdown | |
Makefile | 1 point |
Arbitrary numbers of producers/consumers/items | 3 points |
Correct usage of POSIX semaphores | 4 points |
Documentation | 2 points |