added multiple producer single consumer ring buffer