작성
·
268
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
0
CPU 환경에 따라 다르게 동작할 수 있기 때문에
정확한 원인을 알기 힘들지만,
우선 SetMinThreads, SetMaxThreads 설정 성공값을 bool로 리턴하니
반환값이 무엇인지 로그로 출력해보고,
해당 설정이 잘 동작하는지부터 확인하는게 우선일 것 같네요.
여담이지만 SetMinThreads, SetMaxThreads는 이론 설명을 위해 사용하긴 했지만,
사실 굳이 건드리지 않아도 대부분 쓰레드 풀이 알아서 개수를 잘 관리하긴 합니다.