multi-threaded circular buffer (based off of boost circular buffer)