내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Semaphore 생성자 (Int32, Int32)

2013-12-13

동시 엔트리의 최대 수를 지정하고, 선택적으로 일부 엔트리를 예약하여 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보다 작으면 현재 스레드가 WaitOne(maximumCount - initialCount)번 호출하는 것과 결과가 같습니다. 세마포를 만드는 스레드에 대해 엔트리를 예약하지 않으려면 maximumCountinitialCount에 같은 숫자를 사용합니다.

다음 코드 예제에서는 최대 카운트가 3이고 초기 카운트가 0인 세마포를 만듭니다. 예제에서는 세마포를 기다리지 않도록 차단하는 5개의 스레드를 시작합니다. 주 스레드에서는 3개의 스레드가 세마포에 진입하도록 허용하여 Release(Int32) 메서드 오버로드를 통해 세마포 카운트를 최대값까지 증가시킵니다. 각 스레드는 Thread.Sleep 메서드를 사용하여 1초 동안 기다리고 작업을 시뮬레이션한 다음 Release() 메서드 오버로드를 사용하여 세마포를 해제합니다. 세마포가 해제될 때마다 이전 세마포 카운트가 표시됩니다. 콘솔 메시지가 세마포 사용을 추적합니다. 출력을 쉽게 읽을 수 있도록 시뮬레이션된 작업 간격이 각 스레드마다 약간씩 증가됩니다.

Windows Phone OS

지원되는 버전: 8.0

Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft