TLDR: Multiple processes can bind to the same port using
int sfd = socket(domain, socktype, 0);
int optval = 1;
setsockopt(sfd, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval));
bind(sfd, (struct sockaddr *) &addr, addrlen);
As of Linux 3.9 (might have changed a lot since), the requests are distributed evenly using a hash of the connection tuple (sip, sport, dip, dport). It can be quite unbalanced depending on the type of load and has the caveat that the connection might change destination when starting or stopping processes. It might be fixed today using a lookup table.