Есть ли способ вызвать 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. Как использовать это. Можете ли вы предоставить мне некоторые проекты и процедуры, которые вы делаете.