trans: use a bounded buffer