同時に複数のことを順番に行う方法は?



SkyDNSおよびAydekoの専門家が準備した「UNIXでのネットワークプログラミング」コースを引き続きマスターします。 本日、6回目の講義を公開します。

前回は、有限状態マシンの使用に基づいたプログラムを見ました。 では、1つのプロセス/スレッドで複数の同時接続を処理するために、自動スタイルでプログラムを「教える」方法を説明しましょう。

以前、コースの作成者であるアレクサンダーパトラコフは、一度に複数のクライアントを処理するというトピックに既に触れていました。 その後、彼はいくつかのプロセスを作成することを提案しました。 ただし、この方法は占星術サーバーには適していません。その状態はいくつかのプロセスに共通しているためです(スレッドを使用する場合、このような制限はありません)。

複数のプロセスまたはスレッドの作成に基づいていない、一度に複数のクライアントを処理する方法があります。 これは、この講義の目的であるselect()関数に基づくメッセージ処理サイクルです。

「この方法は、制限要因がプロセッサまたはディスクのパフォーマンスではなく、プログラムが主にネットワークI / Oで占められている場合に適しています」とAlexander Patrakov氏は説明します。

このレッスンでは、学生にselect()関数呼び出しを既存のオートマトンプログラムに追加し、それによって複数のクライアントを処理するように教えるタスクを学生に与えました。

手を試すことをお勧めします! ビデオを見て、コメントを残すことを忘れないでください!



以前の講義:
1. UNIXとCを恐れない人のためのコース
2. プロセス内の各クライアントへ
3. プロトコルまたは占星術師の仕組み実装します
4. 最後まで読む方法
5. 自動スタイルのプログラム-翻訳の難しさ

Source: https://habr.com/ru/post/J144302/


All Articles