Есть ли способ вызвать OCProcess только тогда, когда в сокет поступило новое сообщение?

В вики-руководстве по 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 select) и вызывать OCProcess только при наличии данных. IoTctivity C api не имеет функции getSocketFD.

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

1 ответ

привет олех,

я также делаю на iotivity. я просто хочу знать, как кодировать и редактировать вещи с

iotivity. Как использовать это. Можете ли вы предоставить мне некоторые проекты и процедуры, которые вы делаете.

Другие вопросы по тегам