从两个线程调用相同的阻塞套接字上的recv()

Cla*_*diu 10 c sockets system recv

如果我有一个套接字,s当前没有可用的数据,它是一个阻塞套接字,我recv一次从两个线程调用它会发生什么?其中一个线程会获取数据吗?两者都会得到它吗?第二次调用会recv返回错误吗?

dwc*_*dwc 10

一个线程会得到它,而且没有办法分辨出哪个.

这似乎不是一个合理的设计.有没有理由为什么你需要两个线程调用recv()同一个套接字?

  • 如果它是用于无连接协议(如DNS)的UDP套接字,则从两个线程从同一套接字读取是有意义的.然后,每个线程独立地处理传入请求. (8认同)