複数エージェント

シリアル化と同期機能は、単一のエージェント コンピュータのみで利用できます。 Silk Performer では複数エージェント間で同期とシリアル化の使用を拡張する追加関数が用意されています。

複数エージェント間でのシリアル化は GlobalResourceEnterGlobalResourceRelease 関数により可能です。 GlobalResourceEnter は、限定されたユーザーのみで占有できるリソースを定義します。 リソースを占有するユーザー数がリソースの占有を許可された最大ユーザー数に到達するまで、呼び出し側は待機する必要があります。 GlobalResourceRelease 関数は GlobalResourceEnter 関数で占有されたリソースを解放します。 リソースを待機しているユーザーがまだいる場合は、キューの次のユーザーがシミュレーションを再開します。

複数エージェント間での同期は GlobalWaitFor 関数により可能です。 この関数はチェックポイント (遭遇点) を定義し、呼び出しユーザーをブロックします。 呼び出し側は、指定数のユーザー (呼び出し側を含む) がチェックポイントに達するまたは超えるまで、あるいは指定タイムアウトが発生するまで、待機します。 チェックポイントは名前で識別し、すべてのユーザーに表示されます。各種リモート エージェントで動作するユーザーを含みます。 待機中のユーザーは、指定したタイムアウトに到達するまで、またはユーザーの指定数がチェックポイントに対して関数を呼び出すとき、継続されます。 タイムアウトしたユーザーが、チェックポイントを通過したともみなされます。

関数 GlobalVarGetGlobalVarInc および GlobalVarSet がそれぞれ使用され、すべてのエージェントのすべてのユーザーがアクセスできるグローバル整数変数の値を取得、インクリメント、設定します。

これらの関数の詳細な情報については、『The BDL Function Reference』(英語) を参照してください。