当某个事件在另一个线程上发生时,如何从recv()/ recvfrom()中出来?

时间:2018-12-20 04:39:38

标签: c tcp udp

当另一个线程上发生某些事件时,如何从recv()/ recvfrom()中退出?

示例代码

while ( anyConditionCheckingHere )
{
  if (recv(...) < 0) // ALREADY waiting for message here after fulfilling conditions
  {
  }
}

现在,如果另一个线程正在后台运行并且该线程中发生了某个事件,那么当该事件发生时,如何停止等待消息或如何退出阻塞调用?

2 个答案:

答案 0 :(得分:1)

您有2种可以想到的选择

答案 1 :(得分:1)

如果使用了线程,则无需担心在recv()上阻塞。当下一个线程上发生事件时,它将由调度程序进行调度,并且事件将被处理,而第一个线程将继续在recv()上阻塞。