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

C# 스레드(Thread) 클래스의 주요 속성 완벽 정리

스레드(Thread)란 프로그램의 실행 경로를 의미하며, 각 스레드는 하나의 독립적인 제어 흐름을 정의합니다. 하나의 프로세스 안에서 여러 스레드가 동시에 실행되면서 작업을 병렬로 처리할 수 있게 해주는 것이 바로 멀티스레딩입니다.

C#에서는 System.Threading.Thread 클래스를 통해 스레드를 생성하고 제어할 수 있으며, 이 클래스는 스레드의 상태와 동작을 확인하거나 변경할 수 있는 다양한 속성(Property)을 제공합니다. 아래 표에서 Thread 클래스의 대표적인 12가지 속성을 살펴보겠습니다.

Thread 클래스의 주요 속성

번호속성 및 설명
1CurrentContext
현재 스레드가 실행되고 있는 컨텍스트(Context)를 가져옵니다.
2CurrentCulture
현재 스레드의 문화권(Culture) 정보를 가져오거나 설정합니다. 날짜, 숫자, 통화 등의 표시 형식에 영향을 줍니다.
3CurrentPrincipal
스레드의 현재 보안 주체(Principal)를 가져오거나 설정합니다. 주로 역할 기반(Role-based) 보안 검사에 사용됩니다.
4CurrentThread
현재 실행 중인 스레드 객체 자체를 가져옵니다.
5CurrentUICulture
리소스 관리자(Resource Manager)가 런타임에 문화권별 리소스를 조회할 때 사용하는 현재 문화권을 가져오거나 설정합니다. 다국어 지원 애플리케이션에서 중요하게 활용됩니다.
6ExecutionContext
현재 스레드의 다양한 컨텍스트 정보(보안 컨텍스트, 동기화 컨텍스트 등)를 담고 있는 ExecutionContext 객체를 가져옵니다.
7IsAlive
현재 스레드의 실행 상태를 나타내는 값을 가져옵니다. 스레드가 시작되었고 아직 종료되지 않았다면 true를 반환합니다.
8IsBackground
해당 스레드가 백그라운드 스레드인지 여부를 나타내는 값을 가져오거나 설정합니다. 백그라운드 스레드는 모든 포그라운드 스레드가 종료되면 자동으로 함께 종료됩니다.
9IsThreadPoolThread
해당 스레드가 관리되는 스레드 풀(Managed Thread Pool)에 속해 있는지 여부를 나타내는 값을 가져옵니다.
10ManagedThreadId
현재 관리되는(managed) 스레드의 고유 식별자(ID)를 가져옵니다. 이 값은 애플리케이션이 실행되는 동안 해당 스레드를 구분하는 데 사용됩니다.
11Name
스레드의 이름을 가져오거나 설정합니다. 디버깅 시 스레드를 식별하는 데 유용합니다.
12Priority
스레드의 스케줄링 우선순위(Scheduling Priority)를 나타내는 값을 가져오거나 설정합니다. 우선순위가 높은 스레드일수록 CPU 할당을 더 많이 받을 가능성이 큽니다.

정리

Thread 클래스의 속성들을 잘 활용하면 스레드의 상태 추적, 문화권 설정, 우선순위 조절, 백그라운드 실행 여부 지정 등을 손쉽게 처리할 수 있습니다. 특히 IsAlive, Priority, Name 속성은 실무에서 디버깅과 성능 최적화 과정에서 자주 사용되므로 꼭 기억해 두는 것이 좋습니다.