I am trying to manage multiple Queue Pairs connections in the same thread. To do that, I can share the same Completion Queue with multiple Queue Pairs and poll it in a single thread.
I don't see what feature Shared Receive Queue add?
If you have multiple QPs without a shared receive queue (SRQ) then you need to post sufficient receive work requests to each QP separately, which multiplies the amount of memory needed (each QP needs enough receives posted to handle the worst case). With SRQ, all the QPs can draw from one queue of buffers, which means you just need to handle the worst case aggregate traffic.
Certainly this is not advantageous for all workloads or application designs, but it can be a big improvement for applications where a large workload is spread unpredictably over a large set of QPs (an NVMe over fabrics storage target would be a good example).