C# 신입 개발자가 Thread에 관련하여 질문하나 드립니다.

안녕하세요.
이제 막 C#을 공부하고 있는 신입 개발자입니다.

현재 Thread에 관하여 공부하고 있는중에
정말 궁금한데 찾아보기가 힘들어 (제 검색능력 부족일 가능성이 높습니다…ㅠㅠ)
이렇게 질문글을 올리게 되었습니다.

void Foo()
{
while(true) { … }
}

Thread thread로 Foo라는 함수를 실행하고 있는중에
특정 이벤트가 발생되어 Foo의 반복문이 종료되고
Foo 함수가 종료가 된 상태라면

thread.Join()을 꼭 반드시 실행해줘야 하는것일까요?

해당 thread는
종료된 이후 실행할 job이 아무것도 없으며
신경 쓸 필요가 없는 thread입니다.

질문이 많이 중구난방인 느낌이있으나
설명드리기가 어려워 이렇게 질문드렸습니다.

부족한 질문이지만 답변 부탁드리겠습니다.
감사합니다.

원칙적으로는 어떤 언어로 쓰레드를 띄우든 join은 반드시 하는것이 좋습니다.
하지만 프로세스 실행 종료전에 해당 쓰레드가 종료되는것이 확실히 보장된다면 join을 안해도 문제가 되지는 않습니다.
c#의 경우 Thread의 IsBackground=true 로 설정하면 해당 쓰레드가 돌고있어도 프로세스 종료시 같이 종료가 되기는 합니다.
저같은 경우 c++ 개발하면서 버릇이 되어있어서 c#으로 쓰레드 돌릴때도 반드시 join은 합니다.
질문에 대해 도움이 되었는지 모르겠네요.

2개의 좋아요

답변 감사합니다
저도 c++ 생각해서 join이 필수인가 고민하고 있었네요…ㅎㅎ

아래 토픽과 유사한 질문 및 답변 같습니다.

Thread 관련 질문 드립니다. - :interrobang: 프로그래밍 언어 Q&A / C# Q&A - 닷넷데브 (dotnetdev.kr)


참고로 스래드는 개체를 참조하고 있지 않은 작업 종료된 스래드라면 GC의 수집 대상이 되어 자연스례 자원해제 처리 됩니다.

4개의 좋아요