SW 개발 공부/실수 기록
쓰레드를 안전하게 종료시키는 방법
Maison
2023. 3. 19. 11:22
0. 쓰레드를 종료시키는 방법
1. Thread.Abort() 메서드 호출하여 종료
2. Thread 내에서 플래그를 설정하여 반복 체크하는 방법
3. 스레드간 통신을 위한 적절한 프로토콜을 설계하여 안전하게 종료시키는 방법
1. Thread.Abort() 호출의 문제점
해당 메서드가 호출되면 쓰레드가 예외를 발생시키고, 해당 예외가 처리되지않으면 쓰레드를 종료합니다.
이때, 예외처리가 적절하게 동작되지 않는다면 메모리 누수등의 문제가 발생 할 수 있습니다.
2. 쓰레드를 안전하게 종료시키는 방법
1) 종료 플래그를 설정하여 종료시키기
예제 코드)
class MyThread
{
private bool isStopRequested = false;
public void Run()
{
while (!isStopRequested)
{
// 스레드가 처리하는 작업을 구현한다.
}
}
public void RequestStop()
{
isStopRequested = true;
}
}
class Program
{
static void Main()
{
MyThread thread = new MyThread();
Thread t = new Thread(thread.Run);
t.Start();
// 스레드를 안전하게 종료시키기 위해 RequestStop 메서드를 호출한다.
thread.RequestStop();
}
}
위와 같은 방식으로 쓰레드를 안전하게 종료 시 킬 수 있다.