Есть ли способ вызвать OCProcess только тогда, когда в сокет поступило новое сообщение? - PullRequest
0 голосов
/ 30 января 2019

Вики-руководство IoTctivity говорит, что OCProcess должен выполняться в цикле для получения новых сообщений:

Once initialized you need to create a loop that calls OCProcess until stopped.

  while (!gQuitFlag)
  {
      if (OCProcess() != OC_STACK_OK)
      {
      ...
      }
   }

Это кажется крайне неэффективным.OCProcess вызывается независимо от того, поступили ли данные.Это также требует многопоточности, что увеличивает загрузку ЦП, и, поскольку цикл должен некоторое время находиться в спящем режиме, OCProcess может быть неактивен, когда фактически поступают данные.

Я бы предпочел наблюдать за файловым дескриптором сокета напрямую (например, linuxвыберите) и вызывайте OCProcess только при наличии данных.IoTctivity C api не имеет функции getSocketFD.

Может кто-нибудь посоветовать по этому вопросу?Спасибо

...