Вики-руководство 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.
Может кто-нибудь посоветовать по этому вопросу?Спасибо