인프런 커뮤니티 질문&답변

장재범님의 프로필 이미지
장재범

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Session #1

쓰레드가 만들어지는 시점이 언제인가요?

작성

·

286

0

디버그 모드로 확인했을 때에는

bool pending = _listenSocket.AcceptAsync(args);

이 코드 이후에 쓰레드가 새로 생기는 것을 확인했는데 AcceptAsync가 쓰레드를 생성하고

생성한 쓰레드를 사용해서 I/O작업을 확인하다가 완료되면 e(args) 매개 변수에 대한 Completed 이벤트가 발생시키는 것 (공식 문서에서 따왔습니다)인가요??

 

쓰레드가 만들어지는 시점이 언제인지 왜 만들어졌는지가 궁금해서 질문남깁니다!

 

그리고 소멸되는 시점도 궁금합니다.. (서버 공부를 시작하는 단계여서 소멸이라는 단어가 맞는지,,,)

디버깅을 해보면 작업자 스레드가 사라지는게 아니라 client.close()에 있다가 움직이는 것 처럼 보이는데

close하면 거기서 스레드가 자고있다가, AcceptAsync에서 Event를 주면 그때 깨어나서 일한다고 생각하면 되는건가요?? 

 

항상 친절하게 답변해주셔서 미리 감사합니다!

 

답변 3

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

https://stackoverflow.com/questions/48590349/how-does-a-net-threadpool-thread-created

궁금한 점은 스스로 연구를 해보시는 습관이 좋습니다.
ThreadPool 관련된 내용은 고급 주제이지만 ,
지구 어딘가에는 나와 비슷한 질문을 남긴 사람이 있을거라는 믿음을 갖고
구글링을 해보시면 답을 얻을 수 있습니다.

장재범님의 프로필 이미지
장재범
질문자

넵! 제가 너무 안일했네요

감사합니다 (__)

0

장재범님의 프로필 이미지
장재범
질문자

그럼 C# 이 판단해서 필요할것같으면 쓰레드를 가져오는건가요?

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

C++이라면 메인 쓰레드를 제외하곤 직접 만들어서 사용해야 하고,
위의 C# 코드에선 자체적인 Thread Pooling을 통해 자동으로 관리되고 있으니
생성 / 소멸의 정확한 시점은 알 수 없습니다.

장재범님의 프로필 이미지
장재범

작성한 질문수

질문하기