イベントチャネルが動作したときのプロセスとスレッドの構成について説明します。
esmkchnlコマンドを使用してイベントチャネルを静的生成する際、1つのグループの中に複数のイベントチャネルを含めることができます。生成したイベントチャネルのグループは、esstartchnlコマンドでグループ名を指定して起動します。esstartchnlコマンドを実行すると、指定したグループ情報に含まれるすべてのイベントチャネルを起動します。このとき、グループ情報1つに対して1つのプロセスを起動し、イベントチャネルをプロセス内にスレッドとして起動します。
また、イベントチャネルのスレッドとは別に、タイマ監視スレッドを起動時に生成します。これは、グループ内で共通の環境情報であるイベントデータの生存時間と待ち合わせ時間を監視します。グループ情報とプロセスの対応を以下に示します。
1つのイベントチャネルは、複数のスレッドにより構成されています。イベントチャネルを構成するスレッド数は、イベントチャネルのモデル、構成情報、イベントチャネルの環境情報の設定により異なります。
イベントチャネルのスレッド構成を以下に示します。図中の送受信制御スレッドは、イベントデータを受け渡す基本となるスレッドで、その配下に送信スレッドが存在します。その数は、送信スレッド数の初期値(essetcnfコマンドまたはessetcnfchnlコマンドの-sthinitオプション)、および最大値(essetcnfコマンドまたはessetcnfchnlコマンドの-sthmaxオプション)で指定します。
イベントチャネルを動的生成する際に使用するイベントファクトリのcreateメソッドは、イベントチャネルを動作させるプロセスの生成、およびプロセス上のイベントチャネルの生成・起動を行います。
イベントチャネルを動作させるプロセス数が3個、動作できるイベントチャネルの最大数が9個の場合の例を以下に示します。
上図の番号に沿って、プロセスの生成、およびイベントチャネルの生成・起動を以下に説明します。イベントチャネルを構成するスレッドについては、静的生成運用の構成を参照してください。
createメソッドの起動を受け付けると、イベントチャネルを動作させるプロセスを検索します。プロセスが存在しない場合は、プロセスを生成します。生成時にプロセス上で動作するイベントチャネル数を決定します。
動作させるプロセスを決定すると、プロセス上にイベントチャネルを生成して起動します。上図では、プロセス1のイベントチャネル1、プロセス2のイベントチャネル5、プロセス3のイベントチャネル7、およびイベントチャネル9が動作しています。残りのイベントチャネルは、生成の準備ができている状態を表わしています。この状態でcreateメソッドを実行すると、空きの多いプロセス1またはプロセス2のイベントチャネルを使用します。
動的生成できるイベントチャネルの総数は、動的生成のイベントチャネルの最大起動数(essetcnfコマンドの-dchmaxオプション)で指定します。動的生成のイベントチャネルが動作するプロセスの最大数は、イベントチャネルの最大プロセス数(essetupコマンドの-pオプション)で指定します。