私たちにはLinux組み込みプロジェクトがあり、私たちはパフォーマンスに関心があります。シリアルポートの制限事項非同期入力機能?
シリアルポート非同期入力の例: http://www.faqs.org/docs/Linux-HOWTO/Serial-Programming-HOWTO.html#AEN105 私たちが望むものはほとんどありません。
しかし ループスリープ呼び出しによって失われたCPU性能にチャージオブジェクト内のエンジニア。彼は、プログラムが代わりに応答処理コードを実行するシグナルを待つようにしたいと考えています。
私はすなわち、信号関数内に)(メインからそのコードを動かしてみました:
void signal_handler_IO (int status)
{
// I moved my code here
}
を結果が動作しない、その関数で作られたシリアルポートへの書き込みを迅速に失敗し、プログラムが完全になり、応答しない。
なぜですか?
そして、誰もがただ1つのシリアルポートのためのシグナル駆動I/Oの良いオンライン例がありますか?私はKerriskの "The Linux Priogramming Interface"の第63章を見ていて、狂ったようにグーグルを探しています。私は最初の例を行うより良い方法がないかもしれないと考え始めています。事前に
おかげで、一般的には
バート
コメント「は、通常、我々はここに何か役に立つだろう」を参照してください。ノンブロッキングI/Oをセットアップしてスリープを呼び出したり、ノンブロッキングI/Oをセットアップしたりして、そのスレッドで役に立つ何かを実行しないでください。それ以外の場合は、マルチスレッドに移行する場合は、スレッドをシリアルに見せてブロックI/Oを使用するようにしてください。カーネルは何かするまでスレッドを一時停止します。または、selectを使用して複数の入力ソースを監視するI/Oスレッドがあり、そのいずれかに入力がある場合にのみ目覚めるようになります。一般的に –
が、それは同じ質問に(「なぜ?つまり」と「誰でも例がありますか?」)は、2つの別々の質問をする悪い考えです。 http://meta.stackexchange.com/questions/39223/one-post-with-multiple-questions-or-multiple-postsを参照してください。 –