我有一个线程在循环中调用recvfrom
,超时时间为100毫秒。 另一个线程定期调用sendto
。C函数recvfrom和sendto是否互斥?
sendto
函数是否等待,直到recvfrom
由超时释放(或成功读取)或在该时间段内发送数据。
我有一个线程在循环中调用recvfrom
,超时时间为100毫秒。 另一个线程定期调用sendto
。C函数recvfrom和sendto是否互斥?
sendto
函数是否等待,直到recvfrom
由超时释放(或成功读取)或在该时间段内发送数据。
C函数recvfrom和sendto是否互斥?
不可以。它们都可以同时由不同的线程执行。
sendto()
不等待recvfrom()
读取数据。它会将数据放入套接字的缓冲区并返回。多个sendto()
可能会阻止先前的sendto()
完成。如果在发送过程中发生任何错误(缓冲区已满,消息太大等),则可以检查检查errno
以检查失败的原因。基本上,您不需要在两个线程的调用sendto()
和recvfrom()
之间进行任何同步;他们是原子操作。
不,它不会等待,(至少,它不会等到获得线程安全访问通信栈所需的时间)。
您的测试显示了什么? –
那么,我的程序按预期工作,但我试图确定随着竞态条件的收紧,错误是否会蔓延。 – Pepedou