BoundedBuffer buf; for i = 1 to items do put work(i) to buf end for i = 1 to workers do put end-marker to buf end con i = 1 to workers do Worker(i); end Worker(i) { while (there is work) do get work from buf; do work; end }