ネットワークプログラミングインターフェイスのブロック

かなりの数の従来のコミュニティサーバーアーキテクチャスタイルの評価と比較

プッシュされる関数は、大部分のプログラマーに共通であり、最も好まれるのは、グラフィカルインターフェイスプログラミングでのアプリケーションです。実際、ネットワークプログラミングでは、パーティドライバーは、HTTPサーバープラン、FTPサーバー方式など、リンク数が多くスループットが高いサーバーアプリケーションでさらに広く利用され、展開されています。通常のコミュニティプログラミング手法とは対照的に、お祝い主導型は、ソースの職業を大幅に減らし、プロバイダーの受信能力を向上させ、ネットワークの伝送効率を高めることができます。

 

この論文で説明されているサーバー設計に関しては、検索コミュニティは多くの実装コードを発見できるため、この論文は表示画面と供給コードの調査に限定されず、設計の紹介と比較に集中します。 libevお祝いプッシュライブラリを利用するサーバー製品は、実装コードを提供します。

 

は、2003年にエグゼクティブ(開発)として初めて入社しました。彼は、当社の多くの子会社および関連会社の取締役であり、Tsim Sha Tsui PropertiesLimitedおよびSinoHotels(ホールディングス)リミテッド。

This paper refers to thread / time legend, only to point out which the thread does have blocking hold off on each and every IO, however it won't promise the correctness of delay ratio and IO execution sequence; additionally, the interface outlined within this paper is barely the UNIX / Linux interface familiar on the writer, and the windows interface will not be recommended. Viewers can seek advice from the corresponding windows interface by on their own.

 

1。ネットワークプログラミングインターフェイスのブロック

コミュニティプログラミングと最初に接触するほぼすべてのプログラマーは、listen()、send()、recv()などのインターフェイスを使用します。これらのインターフェースを利用して、サーバー/クライアント製品を作成するのは本当に簡単です。

Let's suppose that we want to develop an easy server plan to supply information solutions comparable to "one concern and one answer" to the solitary customer.

決定1.基本的な1つの質問と1つの特定の回答サーバー/消費者の設計

多数の従来のコミュニティサーバーアーキテクチャ製品の調査と比較

We see that the majority socket interfaces are blocking. The so-called blocking interface implies that the procedure phone (generally IO interface) isn't going to return the decision final result and keeps the existing thread blocked. It only returns when the program contact gets the end result or perhaps the timeout mistake occurs.

 

実際、もちろん通常指定されていない限り、ほぼすべてのIOインターフェイス(ソケットインターフェイスを含む)がブロックしています。これは、コミュニティプログラミングに大きな問題をもたらします。たとえば、send()がとして知られている場合、スレッドはブロックされます。この期間中、スレッドは操作を実行したり、コミュニティが要求したものに応答したりすることができなくなります。これは、マルチクライアントおよびマルチサポートロジックのコミュニティプログラミングに問題をもたらします。現在、多くのプログラマーはこの問題を解明するためにマルチスレッドを選択するかもしれません。

 

 

prototype design companyの例は、Hemtomにあります。

二。マルチスレッドサーバープラン

マルチクライアントのコミュニティアプリケーションを管理するための最良の答えは、サーバーファセットの周りでマルチスレッド(またはマルチコースのアクション)を使用することです。マルチスレッド(またはマルチプロセッシング)の目的は、リンクのブロックが他の接続に影響を与えないようにするために、常にすべての接続に独自のスレッド(またはプロセス)を持たせることです。

マルチシステムまたはマルチスレッドを実装する明確な方法はありません。通常、システムの費用はスレッドの費用よりはるかに大きくなります。その結果、同時により多くのクライアントに会社を供給する必要がある場合、いくつかの手順を使用することは本当にお勧めできません。大規模または長期の情報操作やファイル入力など、1つのプロバイダーの実行で追加のCPUソースを消費する必要がある場合は、手順の方が安全です。通常、pthreadが使用されます。Generate()は新しいスレッドを生成し、fork()はまったく新しいプロセスを生成します。

We suppose which the server / consumer product has larger prerequisites, that is certainly, the server can provide a person issue and 1 respond to services for several customers at the identical time. So we've got the subsequent model.