-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
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개밖에 없다고 뜹니다. 왜이럴까요?
답변을 작성해보세요.
1
Heisia
2022.03.30
저도 동일한 증상이 있어 테스트해보았는데
아마 메인 함수 밑에 while(true) {} 구문이 없으신것 같습니다.
해당 구문 추가 후 다시 돌려보니 정상 작동합니다.
0
Rookiss
지식공유자2020.10.20
CPU 환경에 따라 다르게 동작할 수 있기 때문에
정확한 원인을 알기 힘들지만,
우선 SetMinThreads, SetMaxThreads 설정 성공값을 bool로 리턴하니
반환값이 무엇인지 로그로 출력해보고,
해당 설정이 잘 동작하는지부터 확인하는게 우선일 것 같네요.
여담이지만 SetMinThreads, SetMaxThreads는 이론 설명을 위해 사용하긴 했지만,
사실 굳이 건드리지 않아도 대부분 쓰레드 풀이 알아서 개수를 잘 관리하긴 합니다.
답변 2