When multiple sockets join the same multicast group, received packets are delivered to these sockets in the order that they joined the group.
When multiple sockets are created by different threads and all threads are spinning on
recv(), the thread which is able to receive first will also deliver the packets to the other sockets.
If a thread ‘A’ is spinning on
poll(), and another thread ‘B’, listening to the same group, calls
recv() but does not spin, ‘A’ will notice a received packet first and deliver the packet to ‘B’ without an interrupt occurring.