다음을 통해 공유


Wait Synchronization 기술 샘플

업데이트: 2007년 11월

이 샘플에서는 WaitHandle 클래스를 사용하여 스레드를 동기화하는 방법을 보여 줍니다. 보호된 코드 블록에 단독으로 액세스하도록 하기 위해 WaitHandle에서 파생된 형식인 Mutex를 사용합니다.

샘플 사용에 대한 자세한 내용은 다음 항목을 참조하십시오.

Download sample

명령 프롬프트를 사용하여 샘플을 빌드하려면

  1. 명령 프롬프트 창을 열고 샘플에 대한 언어별 하위 디렉터리 중 하나로 이동합니다.

  2. 선택한 프로그래밍 언어에 따라 명령줄에서 msbuild WaitSynchronizationCS.sln 또는 msbuild WaitSynchronizationVB.sln을 입력합니다.

Visual Studio를 사용하여 샘플을 빌드하려면

  1. Windows 탐색기를 열고 샘플에 대한 언어별 하위 디렉터리 중 하나로 이동합니다.

  2. 선택한 프로그래밍 언어에 따라 WaitSynchronizationCS.sln 또는 WaitSynchronizationVB.sln 아이콘을 두 번 클릭하여 Visual Studio에서 해당 파일을 엽니다.

  3. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

이 샘플을 실행하려면

  1. 새 실행 파일이 들어 있는 디렉터리로 이동합니다.

  2. 명령줄에서 Mutex.exe를 입력합니다.

    참고:

    이 샘플은 콘솔 응용 프로그램을 빌드합니다. 출력을 보려면 콘솔 창에서 응용 프로그램을 시작해야 합니다.

설명

이 샘플에서는 비동기 메서드 호출을 다섯 개까지 큐에 대기시킵니다. 각 메서드는 리소스를 소유할 때까지 기다리고 콘솔에 쓴 다음 중지했다가 두 번째로 콘솔에 씁니다.

다음 글머리 기호의 내용은 이 샘플에서 사용되는 기술과 클래스를 간단하게 설명한 것입니다.

  • 스레드 동기화

    • Mutex 상호 배타적인 스레드 동기화를 제공합니다.

    • AutoResetEvent 샘플의 주 스레드가 설정될 때까지 AutoResetEvent를 기다립니다. 즉, 마지막 비동기 함수의 작업이 완료되는 것을 기다립니다.

    • WaitHandleWaitHandle 클래스는 Mutex 클래스와 AutoResetEvent 클래스가 파생되는 기본 클래스입니다. 이 형식에서는 다양한 파생 형식이 "신호 받음" 상태가 될 때까지 "기다리는" 메서드를 구현합니다.

    • Interlocked 샘플에서는 정적 Decrement 메서드를 사용하여 AutoResetEvent를 설정해야 하는 경우를 나타내는 카운터 변수에 비동기적으로 액세스합니다.

  • 스레딩

    • ThreadPool 개발자는 관리 코드를 작성할 때 가능하면 QueueUserWorkItem 메서드를 사용하여 비동기 메서드 호출을 구현하는 것이 좋습니다. 이 샘플에서는 이 방법을 사용하여 논리 리소스를 사용하기 위해 경쟁하는 코드를 실행합니다.
  • 대리자

    • WaitCallbackThreadPool 클래스에 사용할 형식 안전적인 콜백 메서드를 만드는 데 사용됩니다.

스레딩 및 동기화에 대한 자세한 내용은 build.proj 파일 및 소스 코드의 주석을 참조하십시오.

참고 항목

개념

스레드 및 스레딩

참조

AutoResetEvent

Delegate

Interlocked

Mutex

System.Threading

ThreadPool

WaitCallback

WaitHandle

기타 리소스

스레딩 개체 및 기능