작성 맥락
이 글은 직접 학습하거나 구현하며 남긴 개인 기술 기록입니다. 참고 자료가 있는 경우 본문에 출처를 남기고, 틀린 부분을 발견하면 수정합니다.
C# thread
C#에서
Thread는 메인 함수(프로그램 진입점)가 끝나도 실행을 계속할지 여부가 스레드의 종류에 따라 달라집니다.
스레드에는 두 가지 종류가 있습니다:
- 포그라운드 스레드 (Foreground Thread)
- 백그라운드 스레드 (Background Thread)
1. 포그라운드 스레드 (Foreground Thread)
- 기본적으로 생성된 스레드는 포그라운드 스레드입니다.
- 포그라운드 스레드는 메인 함수가 종료되더라도 스레드가 모두 종료될 때까지 프로그램이 계속 실행됩니다.
예제 코드:
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread thread = new Thread(() =>
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine($"스레드 실행 중: {i}");
Thread.Sleep(1000);
}
});
thread.Start();
Console.WriteLine("메인 함수 종료");
}
}
출력:
메인 함수 종료
스레드 실행 중: 0
스레드 실행 중: 1
스레드 실행 중: 2
...
- 메인 함수가 먼저 종료되지만, 스레드는 계속 실행됩니다.
- 이유:
thread는 포그라운드 스레드이기 때문에 프로그램이 종료되지 않습니다.
2. 백그라운드 스레드 (Background Thread)
- 백그라운드 스레드는 메인 함수 종료 시 즉시 중단됩니다.
- 메인 스레드가 종료되면, 모든 백그라운드 스레드도 종료됩니다.
백그라운드 스레드 설정 예제:
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread thread = new Thread(() =>
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine($"스레드 실행 중: {i}");
Thread.Sleep(1000);
}
});
thread.IsBackground = true; // 백그라운드 스레드로 설정
thread.Start();
Console.WriteLine("메인 함수 종료");
}
}
출력:
메인 함수 종료
- 메인 함수 종료와 함께 백그라운드 스레드도 종료됩니다.
- 이유:
IsBackground = true로 설정했기 때문에 백그라운드 스레드는 메인 스레드 종료 시 강제 종료됩니다.
정리
- 기본적으로
Thread는 포그라운드 스레드로 생성되며, 메인 함수가 종료되어도 계속 실행됩니다. - 스레드를 백그라운드 스레드로 설정하려면
IsBackground = true를 설정해야 합니다. - 포그라운드 스레드: 메인 스레드 종료 후에도 실행됨.
- 백그라운드 스레드: 메인 스레드 종료 시 함께 종료됨.
댓글이 보이지 않으면 GitHub에 로그인한 뒤 새로고침해 주세요. 공개 댓글은 로그인 상태에서 더 안정적으로 표시됩니다.