스레드 풀 스케줄러의 작동 방식을 이해하는 것이 중요합니다. 컴퓨터의 기능에 맞춰 스레드를 실행하는 숫자를 미세 조정하기 위해 설계되었습니다. 귀하의 머신은 동시에 2 개의 스레드 만 실행할 수 있으며 듀얼 코어 CPU가 현재의 표준입니다. 어쩌면 4 명.
그래서 무릎에 많은 스레드를 덤프하면 두 개의 스레드 만 활성화됩니다. 나머지는 대기열에 있고 CPU 코어가 사용 가능할 때까지 기다립니다. 이 두 스레드 중 하나가 완료 되 자마자 다른 스레드가 활성화됩니다. 두 번째로, 완료되지 않은 활성 스레드로 진행되는 작업을 평가합니다. 이 스레드는 블로킹 중이므로 진행하지 않고 다른 스레드를 활성화 할 수 있다는 대략적인 가정을합니다. 이제 세 개의 실행 스레드가 생겼습니다. 기본 스레드 최대 수인 500 개의 스레드를 가져 오려면 249 초가 걸릴 것입니다.
분명히이 동작은 스레드가 스레드 풀 스레드로 실행하기에 적합해야 할 사항을 설명합니다. 신속하게 완료되어야하며 자주 차단하지 않아야합니다. I/O 요청에 대한 차단은 별도로 처리됩니다.
이 동작이 적합하지 않은 경우 일반 스레드를 사용할 수 있습니다. 바로 실행을 시작하고 프로그램 (및 운영 체제)의 다른 스레드와 CPU 시간을두고 경쟁하게됩니다. 30,000 개의 스레드를 만들 수는 없으며 가상 메모리를 충분히 사용할 수 없습니다. 32 비트 운영 체제는 2000 개의 스레드에서 남은 곳으로 튀어 나와 사용 가능한 모든 가상 메모리를 사용합니다.페이징 파일이 다 떨어지기 전에 64 비트 운영 체제에서 약 50,000 개의 스레드를 얻을 수 있습니다. 프로덕션 프로그램에서 이러한 한계를 테스트하는 것은 권장되지 않습니다.
예 내 컴퓨터에 4 개의 코어가 있음을 알았습니다. 내 응용 프로그램이 스레드 풀이 없으면 4 배 느리게 실행됩니다. –