Как выйти из recv () / recvfrom (), когда какое-то событие происходит в другом потоке? - PullRequest
0 голосов
/ 20 декабря 2018

Как выйти из recv () / recvfrom (), когда какое-то событие происходит в другом потоке?

Пример кода,

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

Теперь, если есть одинбольше потоков работает в фоновом режиме, и в этом потоке происходит какое-то событие, затем Как мне перестать ждать сообщения или как выйти из этого блокирующего вызова, когда происходит это событие?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Если используются потоки, нет необходимости беспокоиться о блокировке на recv().Когда событие происходит в следующем потоке, оно будет запланировано планировщиком, и событие будет обработано, в то время как первый поток продолжит блокировку на recv().

0 голосов
/ 20 декабря 2018

у вас есть 2 варианта, которые я могу придумать

...