• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

17:30 초 부근에 QueueUserWorkItem 테스트하는 부분에서

20.10.20 15:39 작성 조회수 204

0

            ThreadPool.SetMinThreads(1, 1);

            ThreadPool.SetMaxThreads(5, 5);

            for (int i = 0; i < 4; i++)

                ThreadPool.QueueUserWorkItem((obj) => { while (true) { } });

            ThreadPool.QueueUserWorkItem(MainThread);

for문 체크하실 때 5에서 4로 바꾸셨는데 저도 똑같이 했는데 출력이 안됩니다. 3이하로 내리니까 출력이 됩니다. 

디버그로 쓰레드가 몇개 있는지 확인해봤는데 주 쓰레드 포함 5개밖에 없다고 뜹니다. 왜이럴까요?

답변 2

·

답변을 작성해보세요.

1

Heisia님의 프로필

Heisia

2022.03.30

저도 동일한 증상이 있어 테스트해보았는데

아마 메인 함수 밑에 while(true) {} 구문이 없으신것 같습니다.

해당 구문 추가 후 다시 돌려보니 정상 작동합니다.

0

CPU 환경에 따라 다르게 동작할 수 있기 때문에
정확한 원인을 알기 힘들지만,

우선 SetMinThreads, SetMaxThreads 설정 성공값을 bool로 리턴하니
반환값이 무엇인지 로그로 출력해보고,
해당 설정이 잘 동작하는지부터 확인하는게 우선일 것 같네요.

여담이지만 SetMinThreads, SetMaxThreads는 이론 설명을 위해 사용하긴 했지만,
사실 굳이 건드리지 않아도 대부분 쓰레드 풀이 알아서 개수를 잘 관리하긴 합니다.