情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Semaphore コンストラクター (Int32, Int32)

2013/12/12

同時実行エントリの最大数を指定し、オプションでエントリをいくつか予約して、Semaphore クラスの新しいインスタンスを初期化します。

Namespace:  System.Threading
アセンブリ:  System (System.dll 内)

public Semaphore(
	int initialCount,
	int maximumCount
)

パラメーター

initialCount
型: System.Int32
同時に許可されるセマフォの要求の初期数。
maximumCount
型: System.Int32
同時に許可されるセマフォの要求の最大数。

例外条件
ArgumentException

initialCountmaximumCount より大きくなっています。

ArgumentOutOfRangeException

maximumCount が 1 未満です。

または

initialCount が 0 未満です。

このコンストラクターは、名前のないセマフォを初期化します。このようなセマフォのインスタンスを使用するスレッドはすべて、インスタンスへの参照を持っている必要があります。

initialCountmaximumCount よりも小さい場合、現在のスレッドが maximumCount から initialCount を減算した回数だけ WaitOne を呼び出した場合と同じ結果になります。セマフォを作成するスレッド用にエントリを予約しない場合は、maximumCountinitialCount に同じ値を使用してください。

カウントの最大値が 3 で初期カウントが 0 のセマフォを作成するコード例を次に示します。この例では 5 つのスレッドが開始され、ブロックされてセマフォを待機します。メイン スレッドが Release(Int32) メソッド オーバーロードを使用してセマフォのカウントを最大値まで増加させ、3 つのスレッドがセマフォに入ることができるようにします。各スレッドは、動作をシミュレートするために Thread.Sleep メソッドを使用して 1 秒間待機し、その後 Release() メソッド オーバーロードを呼び出してセマフォを解放します。セマフォが解放されるたびに、前のセマフォのカウントが表示されます。コンソール メッセージは、セマフォの使用状況を追跡します。出力を読み取りやすくするために、シミュレートされた動作間隔がスレッドごとに若干増加します。

Windows Phone OS

サポート: 8.0

表示: