2017-02-09 7 views
1

2つのセンサー(5Hzと200Hz)を手動でポーリングし、両方のファイルで利用可能なデータがあるかどうかを調べる組み込みシステム(LinuxとC)を開発しました。ポーリングと手動でポーリングを選択する

ここでは、PollまたはSelect POSIX関数を使用してCPU使用率を節約したいと考えています。私はそれについて、またソケットで起こりうるレイテンシについて読んでいます。私は、ポーリングと機能の選択が遅いか、私が読んだだけのこの「待ち時間」が重要でないかどうかを知りたいと思います。

センサは5msごとにデータを送信し、アルゴリズムは1〜2ms(カルマンフィルタ)を取ることができます。したがって、システムは次のセンササンプルまで2〜3ミリ秒か、またはアプリケーションには遅すぎるでしょう。

+0

「遅い」と定義してください – holmium

+0

私はそれを読んでいます。ソケットを使って5秒の遅延を得ることは可能です。私の場合、センサーを使って、私は待ち時間を見ていません。センサは、それぞれ5ミリスのデータを送信し、アルゴリズムは1~2ミリ秒(カルマンフィルタ)を取ることができる。したがって、システムは次のセンササンプルまで2〜3ミリスを有する。 –

+0

読み込んだデバイス(シリアルポート?)は、select()システムコールをサポートする必要があります。そしてあなたが心配している "レイテンシ"は、1つのシステムコール(1つまたは2つのread()につき)だけです。 – joop

答えて

1

投票と選択の両方のメカニズムは、同じ目的を果たすためのものです。 thisリンクを行ってください。これにより、両方のメカニズムの深いパフォーマンスに関する理解が得られます。その後、あなたは決定を下すことができます。

Pollについては、man pollページを参照してください。

selectの詳細については、man selectページを参照してください。私はそれのMultithreaded applications sectionを通過することをお勧めします。

epollのメカニズムもご覧ください。実装の思想を広げるのに役立ちます。

関連する問題