C 手动轮询并根据轮询选择[速度]

C 手动轮询并根据轮询选择[速度],c,performance,select,polling,latency,C,Performance,Select,Polling,Latency,我开发了一个嵌入式系统(Linux和C),可以手动读取两个传感器(5Hz和200Hz)轮询,检查两个文件中是否都有可用数据 现在,我想使用Poll或Select POSIX函数来节省CPU使用量。我一直在读关于它和套接字中一些可能的延迟。我想知道轮询和选择功能是否很慢,或者只是我读到的这个“延迟”无关紧要 传感器每5毫秒发送一次数据,算法可能需要1-2毫秒(卡尔曼滤波)。因此,在下一个传感器采样之前,系统有2-3毫秒的时间,否则对我的应用程序来说速度太慢。轮询和选择机制的目的是相同的。通过链接。

我开发了一个嵌入式系统(Linux和C),可以手动读取两个传感器(5Hz和200Hz)轮询,检查两个文件中是否都有可用数据

现在,我想使用Poll或Select POSIX函数来节省CPU使用量。我一直在读关于它和套接字中一些可能的延迟。我想知道轮询和选择功能是否很慢,或者只是我读到的这个“延迟”无关紧要


传感器每5毫秒发送一次数据,算法可能需要1-2毫秒(卡尔曼滤波)。因此,在下一个传感器采样之前,系统有2-3毫秒的时间,否则对我的应用程序来说速度太慢。

轮询和选择机制的目的是相同的。通过链接。这将深入了解两种机制的性能。然后你就可以做出决定了

有关
轮询
机制的详细信息,请浏览第页

对于
选择
机构,通过页面了解更多信息。我建议浏览一下它的
多线程应用程序部分


还可以查看
epoll
机制。这可以帮助您拓宽实施思路。

请定义“慢”,我听说使用套接字可以获得5s的延迟。在我的例子中,使用传感器,我没有看到任何延迟。传感器每5毫秒发送一次数据,算法可能需要1-2毫秒(卡尔曼滤波)。因此,在下一个传感器采样之前,系统有2-3毫秒。从中读取的设备(串行端口?)应支持select()系统调用。您担心的“延迟”只是一个系统调用(每一个或两个read()调用一次)