Are BSD/Posix sockets reentrant?

2019-08-15 02:22发布

问题:

Can several threads operate on the same socket descriptor, i.e accept(sock_fd) at the same time without concern?

The platform I'm mostly interested in is POSIX/Linux.

回答1:

Yes, they are "reentrant" - kernel locks the socket structure while working on it (see Linux accept source for example), so only one thread would get the client connection.