1

私は、非同期イベント ディスパッチを処理するために kqueue() / epoll() を使用して、C で最初のシングル スレッド、シングル プロセス サーバーを作成しています。当然のことながら、制御の流れをたどるのは、ブロックしているサーバーよりもはるかに困難です。

コールバック駆動型のプロトコル実装が巨大な絡み合った毛玉になるのを避けるために人々が使用する一般的なパターン (おそらく名前を含む) はありますか?

あるいは、C で書かれたノンブロッキング サーバーで、ソース コードを読むのが楽しくなるものはありますか?

どんな入力でも大歓迎です!

その他の考え:

面倒な作業の多くは、IO のバッファリングを処理する必要があることに起因しているようです。バッファの充填/排出と単一の状態遷移の間には、必ずしも対応はありません。バッファーのフィル/ドレインは、[0, N] 状態遷移に対応する場合があります。)

私は libev ( docs here ) を見てきましたが、それは優れたツールのように見えますが、libevent はそれほど刺激的ではないように見えますが、それでも有用に見えますが、どちらも実際には質問に答えていません。ひどく不透明ではありません。

4

1 に答える 1

1

State ThreadsGNU Portable Threadsなどを使用してみてください。これにより、接続ごとに 1 つのスレッドを使用しているかのように記述できます (実装ではFibersを使用します)。

または、ステート マシン ジェネレーター ( Ragelなど) を使用してプロトコルの実装を構築することもできます。

于 2011-05-06T14:10:27.393 に答える