스레딩 개체 및 기능

.NET Framework에서는 다중 스레드 응용 프로그램을 만들고 관리할 수 있는 여러 개체를 제공합니다. 관리되는 스레드는 Thread 클래스에서 나타냅니다. ThreadPool 클래스를 사용하면 다중 스레드 백그라운드 작업을 쉽게 만들고 관리할 수 있습니다. BackgroundWorker 클래스는 사용자 인터페이스와 상호 작용하는 작업에 대해 같은 역할을 수행합니다. Timer 클래스는 시간 간격에서 백그라운드 작업을 실행합니다.

이 외에도 .NET Framework 버전 2.0에 소개된 SemaphoreEventWaitHandle 클래스를 비롯하여 스레드의 작업을 동기화하는 여러 클래스가 있습니다. 이러한 클래스의 기능은 동기화 기본 형식 개요에 비교되어 있습니다.

단원 내용

  • 관리되는 스레드 풀
    스레드를 직접 관리하지 않아도 스레드에서 작업을 수행하도록 요청해 주는 ThreadPool 클래스에 대해 설명합니다.

  • 타이머
    Timer를 사용하여 특정 시간에 대리자가 호출되도록 지정하는 방법을 설명합니다.

  • Monitor
    Monitor 클래스를 사용하여 멤버에 대한 액세스를 동기화하거나 사용자 고유의 스레드 관리 유형을 빌드하는 방법을 설명합니다.

  • 대기 핸들
    이벤트 대기 핸들, 뮤텍스 및 세마포에 대한 추상 기본 클래스이며, 여러 개의 동기화 이벤트를 대기할 수 있게 하는 WaitHandle 클래스에 대해 설명합니다.

  • EventWaitHandle, AutoResetEvent, CountdownEvent 및 ManualResetEvent
    신호를 보내고 신호를 대기하여 스레드 작업을 동기화하는 데 사용되는 관리되는 이벤트 대기 핸들에 대해 설명합니다.

  • 뮤텍스
    Mutex를 사용하여 개체에 대한 액세스를 동기화하거나 사용자 고유의 동기화 메커니즘을 빌드하는 방법을 설명합니다.

  • 연동 작업
    Interlocked 클래스를 사용하여 값을 증가 또는 감소시킨 다음 해당 값을 단일 원자 연산에 저장하는 방법을 설명합니다.

  • 판독기 및 작성기 잠금
    단일 작성자/다수 독자 의미를 구현하는 잠금을 정의합니다.

  • 세마포 및 SemaphoreSlim
    Semaphore 개체와 이 개체를 사용하여 제한된 리소스에 대한 액세스를 제어하는 방법을 설명합니다.

  • 동기화 기본 형식 개요
    관리되는 스레드를 잠그고 동기화하기 위해 제공되는 .NET Framework 클래스의 기능을 비교합니다.

  • 장벽(.NET Framework)
    단계별 작업에서 스레드를 조정하기 위해 장벽 패턴을 구현하는 Barrier 개체에 대해 설명합니다.

  • SpinLock
    특정 하위 수준 시나리오에서 Monitor 클래스 대신 사용할 수 있는 간단한 개체인 SpinLock에 대해 설명합니다.

  • 취소 토큰
    스레드 간의 협조적 취소를 구현하는 데 사용할 수 있는 간단한 개체인 CancellationToken에 대해 설명합니다.

  • SpinWait
    커널 기반 대기를 시작하기 전에 바쁘게 돌아가는 회전을 수행하는 하위 수준 동기화 기본 형식인 SpinWait에 대해 설명합니다.

참조

  • Thread
    관리되는 스레드가 비관리 코드에서 파생되었는지 또는 관리되는 응용 프로그램에서 만들어졌는지 여부에 관계없이 관리되는 스레드를 나타내는 Thread 클래스에 대한 참조 설명서를 제공합니다.

  • BackgroundWorker
    사용자 인터페이스와 상호 작용하여 사용자 인터페이스 스레드에서 발생한 이벤트를 통해 통신하는 백그라운드 작업을 설정합니다.

관련 단원

  • 비동기 파일 I/O
    I/O 비동기 완료 포트에서 스레드 풀을 사용하여 입력/출력 작업이 완료된 경우에만 처리를 요청하는 방법을 설명합니다.

  • 작업 병렬 라이브러리
    .NET Framework 버전 4 이상에서 다중 스레드 프로그래밍에 권장되는 방법에 대해 설명합니다.