In reply to chr_sue:
I understand that uvm_queue implements the data structure similar to SV queue, and the uvm_pool is similar to SV associative array. But they do not change the fact that we can use uvm_pool as a container of uvm_queue using key string, in order to share the uvm_queue from a component to others easily. And it is the requirement of this topic.
You put any type of a uvm_queue to a pool, and get it in other components for specific key.
You can see many built-in pools like that in UVM such as uvm_barrier_pool, uvm_event_pool.