私は、複雑なマルチスレッド実装から、ステートマシンを使用して接続されているセッションの状態を追跡するシングルスレッド/シングルプロセス実装に移行する TFTP 実装に取り組んでいます。TFTP は十分に単純であり、同時セッションの数が十分に少ないため、コード サイズと複雑さを大幅に節約する以外に、ソフトウェアへの影響は実際にはありません。
もちろん、他のセッションが接続されているときに、1 つのセッションだけをブロックすることはできません。これを改善するために、私の最初の考えは POSIX AIO でしたが、いくつかの調査の結果、それは
- 不十分に文書化されており、完全ではありません
- ディスク I/O でのみ動作し、ソケットをサポートしないか、ソケットで動作するが読み取り/書き込みのみ - リスニング用ではありません。
このリンク ( http://davmac.org/davpage/linux/async-io.html ) に例が含まれていますが、他にも見つけました。'08の以前の stackoverflow の投稿 ( POSIX 非同期 I/O (AIO) のステータスとは? ) で、いくつかの追加の視点が提供されました。
C 開発者にとって、AIO は人々が主張するほどまだ壊れているのでしょうか? 人々は本当に AIO を使用せず、主にポーリング/選択または有限サイズのスレッド プールに固執しますか?