Multi-thread circle buffer Use a monitor and condition variables to complement a multi-thread circle buffer.