added threaded producer-consumer implementation