IoTivity Wiki指南指出,OCProcess必须循环执行才能获取新消息:
Once initialized you need to create a loop that calls OCProcess until stopped.
while (!gQuitFlag)
{
if (OCProcess() != OC_STACK_OK)
{
...
}
}
这似乎效率极低。不管数据是否到达,都会调用OCProcess。它还需要线程化,这会增加CPU使用率,并且由于循环必须休眠一段时间,因此当实际数据到达时OCProcess可能处于非活动状态。
我宁愿直接观察套接字的文件描述符(例如linux select),并且仅在有数据时才调用OCProcess。 IoTivity C API不具有getSocketFD函数。
有人可以对此问题提供建议吗?谢谢