2017-02-09 62 views
1

我開發了一個嵌入式系統(Linux和C),可以手動讀取兩個傳感器(5Hz和200Hz)輪詢,檢查兩個文件中是否有數據可用。輪詢和手動輪詢選擇[SPEED]

現在,我想使用民意調查或選擇POSIX功能來節省CPU使用率。我一直在閱讀關於它以及套接字中一些可能的延遲。我想知道,民意調查和選擇功能是否緩慢或只是我讀過的這種「延遲」是微不足道的。

傳感器每5ms發送一次數據,算法可能需要1-2ms(卡爾曼濾波器)。所以系統有2-3毫秒,直到下一個傳感器採樣,否則它對我的應用來說太慢。

+0

請定義「慢」 – holmium

+0

我讀過,可以使用套接字5秒延遲。在我的情況下,使用傳感器,我沒有看到任何延遲。傳感器每5milis發送數據,算法可能需要1-2millis(卡爾曼濾波器)。所以系統有2-3個milis直到下一個傳感器樣本。 –

+0

您讀取的設備(串口?)應該支持select()系統調用。而你所擔心的「等待時間」只有一個系統調用(每一個或兩個read()), – joop

回答

1

輪詢和選擇機制都是爲了達到相同的目的。通過this鏈接。這將使理解這兩種機制的深度表現。之後,你將能夠做出決定。

對於Poll機制通過man poll頁面獲取更多信息。

對於select機制通過man select page for more information。我會建議通過它的Multithreaded applications section

請看epoll機制。這可以幫助您拓寬實施思路。