Network API reentrant ?

Are the socket functions (send, recv) reentrant ? Hence, can I send and receive at the same time on 1 socket from two concurrent threads ?

I am not 100% sure, but would think it can be done, except for a small time down in the calls themselves, where a semaphore most likely is being used to protect some common memory. In any case it should not crash the application, but worst case halt one of the threads while the other completes its task.