스레드(Thread)란 프로그램의 실행 경로를 의미하며, 각 스레드는 하나의 독립적인 제어 흐름을 정의합니다. 하나의 프로세스 안에서 여러 스레드가 동시에 실행되면서 작업을 병렬로 처리할 수 있게 해주는 것이 바로 멀티스레딩입니다.
C#에서는 System.Threading.Thread 클래스를 통해 스레드를 생성하고 제어할 수 있으며, 이 클래스는 스레드의 상태와 동작을 확인하거나 변경할 수 있는 다양한 속성(Property)을 제공합니다. 아래 표에서 Thread 클래스의 대표적인 12가지 속성을 살펴보겠습니다.
Thread 클래스의 주요 속성
| 번호 | 속성 및 설명 |
|---|---|
| 1 | CurrentContext 현재 스레드가 실행되고 있는 컨텍스트(Context)를 가져옵니다. |
| 2 | CurrentCulture 현재 스레드의 문화권(Culture) 정보를 가져오거나 설정합니다. 날짜, 숫자, 통화 등의 표시 형식에 영향을 줍니다. |
| 3 | CurrentPrincipal 스레드의 현재 보안 주체(Principal)를 가져오거나 설정합니다. 주로 역할 기반(Role-based) 보안 검사에 사용됩니다. |
| 4 | CurrentThread 현재 실행 중인 스레드 객체 자체를 가져옵니다. |
| 5 | CurrentUICulture 리소스 관리자(Resource Manager)가 런타임에 문화권별 리소스를 조회할 때 사용하는 현재 문화권을 가져오거나 설정합니다. 다국어 지원 애플리케이션에서 중요하게 활용됩니다. |
| 6 | ExecutionContext 현재 스레드의 다양한 컨텍스트 정보(보안 컨텍스트, 동기화 컨텍스트 등)를 담고 있는 ExecutionContext 객체를 가져옵니다. |
| 7 | IsAlive 현재 스레드의 실행 상태를 나타내는 값을 가져옵니다. 스레드가 시작되었고 아직 종료되지 않았다면 true를 반환합니다. |
| 8 | IsBackground 해당 스레드가 백그라운드 스레드인지 여부를 나타내는 값을 가져오거나 설정합니다. 백그라운드 스레드는 모든 포그라운드 스레드가 종료되면 자동으로 함께 종료됩니다. |
| 9 | IsThreadPoolThread 해당 스레드가 관리되는 스레드 풀(Managed Thread Pool)에 속해 있는지 여부를 나타내는 값을 가져옵니다. |
| 10 | ManagedThreadId 현재 관리되는(managed) 스레드의 고유 식별자(ID)를 가져옵니다. 이 값은 애플리케이션이 실행되는 동안 해당 스레드를 구분하는 데 사용됩니다. |
| 11 | Name 스레드의 이름을 가져오거나 설정합니다. 디버깅 시 스레드를 식별하는 데 유용합니다. |
| 12 | Priority 스레드의 스케줄링 우선순위(Scheduling Priority)를 나타내는 값을 가져오거나 설정합니다. 우선순위가 높은 스레드일수록 CPU 할당을 더 많이 받을 가능성이 큽니다. |
정리
Thread 클래스의 속성들을 잘 활용하면 스레드의 상태 추적, 문화권 설정, 우선순위 조절, 백그라운드 실행 여부 지정 등을 손쉽게 처리할 수 있습니다. 특히 IsAlive, Priority, Name 속성은 실무에서 디버깅과 성능 최적화 과정에서 자주 사용되므로 꼭 기억해 두는 것이 좋습니다.