다음을 통해 공유


스레딩(C# 및 Visual Basic)

스레딩을 사용하면 Visual Basic 또는 C# 프로그램에서 동시 처리를 수행하여 한 번에 여러 작업을 진행할 수 있습니다.예를 들어, 스레딩을 사용하여 사용자의 입력을 모니터링하고 백그라운드 작업을 수행하고 입력의 동시 스트림을 처리할 수 있습니다.

스레드에는 다음과 같은 속성이 있습니다.

  • 스레드를 사용하면 프로그램에서 동시 처리 작업을 수행할 수 있습니다.

  • .NET Framework System.Threading 네임스페이스를 사용하면 스레드를 더 쉽게 사용할 수 있습니다.

  • 스레드는 응용 프로그램의 리소스를 공유합니다.자세한 내용은 스레드 및 스레딩 사용을 참조하십시오.

기본적으로 Visual Basic 또는 C# 프로그램에는 하나의 스레드가 있습니다.그러나 기본 스레드와 함께 병렬 방식으로 코드를 실행하는 데 사용할 보조 스레드를 만들 수도 있습니다.이러한 스레드를 일반적으로 작업자 스레드라고 합니다.

작업자 스레드를 사용하면 기본 스레드를 사용하지 않고도 시간이 오래 걸리는 작업이나 빨리 끝내야 할 작업을 수행할 수 있습니다.예를 들어, 작업자 스레드는 이전 요청이 완료되기를 기다리지 않고 다른 들어오는 요청을 처리해야 하는 서버 응용 프로그램에 자주 사용됩니다.작업자 스레드는 데스크톱 응용 프로그램에서 "백그라운드" 작업을 수행하는 데도 사용됩니다. 이렇게 하면 사용자 인터페이스 요소를 관리하는 기본 스레드가 사용자 작업에 계속 응답할 수 있습니다.

스레딩을 사용하면 처리량과 응답성에 관련된 문제를 해결할 수 있지만 교착 상태나 경쟁 조건 등의 리소스 공유 문제가 새로 발생할 수도 있습니다.다중 스레드는 파일 핸들과 네트워크 연결 등의 서로 다른 리소스를 필요로 하는 작업에 가장 적합합니다.한 리소스에 여러 스레드를 할당하면 동기화 문제가 발생할 수 있으며 다른 스레드의 작업이 완료되기를 기다리느라 스레드가 자주 차단되어 다중 스레드를 사용하는 의의가 사라집니다.

일반적으로 작업자 스레드는 다른 스레드에 사용되는 리소스를 많이 필요로 하지 않으며 시간이 오래 걸리거나 빠른 시간 안에 끝내야 할 작업을 수행하는 데 사용됩니다.대개의 경우 프로그램의 일부 리소스는 여러 스레드에서 액세스해야 합니다.이러한 경우에 대비하여 System.Threading 네임스페이스에서는 스레드를 동기화하기 위한 클래스를 제공합니다.이러한 클래스에는 Mutex, Monitor, Interlocked, AutoResetEventManualResetEvent가 있습니다.

이러한 클래스의 일부 또는 전체를 사용하여 여러 스레드의 작업을 동기화할 수 있지만 다중 스레딩에 대한 일부 지원 기능은 Visual Basic 및 C# 언어를 통해 지원됩니다.예를 들어, Visual Basic SyncLock 문과 C# Lock 문Monitor를 암시적으로 사용하여 동기화 기능을 제공합니다.

[!참고]

.NET Framework 4에서는 System.Threading.Tasks.ParallelSystem.Threading.Tasks.Task 클래스, PLINQ(병렬 LINQ), System.Collections.Concurrent 네임스페이스의 새 동시 컬렉션 클래스, 스레드 개념이 아닌 작업 개념을 기반으로 하는 새 프로그래밍 모델 등을 통해 매우 간단하게 수행할 수 있습니다.자세한 내용은 .NET Framework의 병렬 프로그래밍을 참조하십시오.

관련 항목

제목

설명

다중 스레드 응용 프로그램(C# 및 Visual Basic)

스레드를 만들고 사용하는 방법에 대해 설명합니다.

다중 스레드 프로시저의 매개 변수 및 반환 값(C# 및 Visual Basic)

다중 스레드 응용 프로그램에서 매개 변수를 전달하고 반환하는 방법에 대해 설명합니다.

연습: BackgroundWorker 구성 요소를 사용한 다중 스레딩(C# 및 Visual Basic)

간단한 다중 스레드 응용 프로그램을 만드는 방법을 보여 줍니다.

스레드 동기화(C# 및 Visual Basic)

스레드의 상호 작용을 제어하는 방법을 설명합니다.

스레드 타이머(C# 및 Visual Basic)

개별 스레드에서 프로시저를 고정 간격으로 실행하는 방법에 대해 설명합니다.

스레드 풀링(C# 및 Visual Basic)

시스템에서 관리하는 작업자 스레드의 풀을 사용하는 방법을 설명합니다.

방법: 스레드 풀 사용(C# 및 Visual Basic)

스레드 풀에 있는 여러 스레드의 동기화된 사용을 보여 줍니다.

관리되는 스레딩

.NET Framework에서 스레딩을 구현하는 방법을 설명합니다.

중요 설명서 장

C# 3.0 in a Nutshell, Third Edition: A Desktop Quick ReferenceThreading

C# 3.0 in a Nutshell, Third Edition: A Desktop Quick ReferenceAsynchronous Methods

C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmersThreading and Synchronization