Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Thread 클래스의 주요 속성과 메서드 총정리

스레드(Thread)는 경량 프로세스로, 하나의 프로그램 내에서 여러 작업을 동시에 수행할 수 있게 해주는 실행 단위입니다. 현대 운영체제가 동시성(Concurrency) 프로그래밍을 구현하는 가장 대표적인 방식이 바로 스레드를 활용하는 것입니다.

C#에서는 System.Threading 네임스페이스의 Thread 클래스를 통해 스레드를 생성하고 제어할 수 있습니다. 이 글에서는 Thread 클래스에서 자주 사용되는 핵심 속성과 메서드를 정리해 소개합니다.

Thread 클래스의 주요 속성

번호속성 및 설명
1CurrentContext
현재 스레드가 실행 중인 컨텍스트(Context)를 가져옵니다.
2CurrentCulture
현재 스레드의 문화권(Culture) 정보를 가져오거나 설정합니다.
3CurrentPrincipal
역할 기반(Role-based) 보안을 위해 스레드의 현재 보안 주체(Principal)를 가져오거나 설정합니다.
4CurrentThread
현재 실행 중인 스레드를 가져옵니다.
5CurrentUICulture
리소스 관리자(Resource Manager)가 런타임에 문화권별 리소스를 조회할 때 사용하는 현재 문화권을 가져오거나 설정합니다.
6ExecutionContext
현재 스레드의 다양한 컨텍스트 정보를 담고 있는 ExecutionContext 객체를 가져옵니다.
7IsAlive
현재 스레드의 실행 상태를 나타내는 값을 가져옵니다.
8IsBackground
해당 스레드가 백그라운드 스레드인지 여부를 나타내는 값을 가져오거나 설정합니다.

Thread 클래스의 주요 메서드

번호메서드 및 설명
1public void Abort()
호출된 스레드에서 ThreadAbortException을 발생시켜 스레드 종료 절차를 시작합니다. 이 메서드를 호출하면 일반적으로 해당 스레드가 종료됩니다.
참고: .NET Core 및 .NET 5 이상에서는 지원되지 않으며, 플랫폼에서 PlatformNotSupportedException이 발생합니다.
2public static LocalDataStoreSlot AllocateDataSlot()
모든 스레드에 이름 없는 데이터 슬롯(Data Slot)을 할당합니다. 더 나은 성능을 위해서는 ThreadStaticAttribute 특성이 적용된 필드를 사용하는 것이 권장됩니다.
3public static LocalDataStoreSlot AllocateNamedDataSlot(string name)
모든 스레드에 지정한 이름의 데이터 슬롯을 할당합니다. 마찬가지로 성능을 고려한다면 ThreadStaticAttribute 특성이 적용된 필드를 사용하는 것이 좋습니다.
4public static void BeginCriticalRegion()
호스트(Host)에게 스레드 중단(Abort)이나 처리되지 않은 예외가 애플리케이션 도메인 내의 다른 작업까지 위협할 수 있는 코드 영역에 진입함을 알립니다.
5public static void BeginThreadAffinity()
관리 코드(Managed Code)가 현재 물리적 운영체제 스레드의 식별자에 의존하는 명령을 실행하려고 함을 호스트에게 알립니다.
6public static void EndCriticalRegion()
스레드 중단이나 처리되지 않은 예외의 영향이 현재 작업에만 국한되는 코드 영역에 진입함을 호스트에게 알립니다.
7public static void EndThreadAffinity()
관리 코드가 현재 물리적 운영체제 스레드의 식별자에 의존하는 명령 실행을 마쳤음을 호스트에게 알립니다.

마무리

Thread 클래스는 멀티스레딩 프로그래밍의 기본이 되는 요소입니다. 속성을 활용하면 스레드의 상태와 환경을 확인·제어할 수 있고, 메서드를 활용하면 스레드의 생명주기를 관리할 수 있습니다. 최신 .NET 환경에서는 Task와 async/await 같은 비동기 패턴이 권장되지만, 스레드의 동작 원리를 이해하는 것은 여전히 안정적인 애플리케이션을 개발하는 데 중요한 기반이 됩니다.