セマフォー

セマフォーは、相互に排他的な (mutex) リソースをセットアップする、システムのグローバルな信号フラグです。 セマフォーを使用して、いくつかのプロセスに、その他のプロセスが完了するのを待機させます。

「ジョブ」 > 「セマフォー」を使用して、使用中のジョブ・セマフォーを表示できます。また、セマフォーをクリアすることもできます。 セマフォーのクリアは、ハングしたジョブまたは取り消されたジョブがそのセマフォーをリリースできないときに必要になることがあります。

「セマフォー」パネルは、「ジョブ」パネルで使用されます。
.semget コマンドと .semput コマンドというドット・コマンドのペアによって、 セマフォーを実装します。 .semget コマンドを使用して、ラベルを「確保します」。ステップがラベルを取得した後、同一ラベルを取得しようとする (任意のプロジェクトにある) その他のステップは、 初めの要求者がそのラベルを解放するまで待機する必要があります。
注: .semget コマンドを含むステップは、セマフォーがリリースされるまで待機 します。 ジョブが失敗して、セマフォーがアクティブのままになっている場合は、 そのセマフォーを使用するジョブを再び実行できるように、セマフォーを手動でクリアする必要があります。

例えば、プリンター・ドライバーを作成するプログラムがあり、常に 1 つのプロセスだけが、そのプログラムを使用するようにしたい場合を考えます。 プログラムを呼び出す各プロジェクト内で、以下のコマンド行によって、3 つのステップをセットアップします。

ステップ

コマンド行

セマフォーの取得

.semget $BF_PROJECTNAME_PHYS

ドライバー作成プログラムの実行

printdrivermaker.exe windows

セマフォーの解放

.semput $BF_PROJECTNAME_PHYS

負荷の高いサーバーや、単一ユーザー・ライセンスのソフトウェア・プログラムなど、組織の重要なリソースに対して、セマフォーを確立できます。 保護したいリソースを使用する各ステップを、.semget コマンドと .semput コマンドでラップしてください。

セマフォーは、以下の規則に従います。


フィードバック