1

나는 그 제공 COM 인터페이스를 통해 hMailServer에 액세스하는 '관리 콘솔'을 쓰고 있어요. Visual Basic 2010 Express를 사용하고 있습니다. 한 절차에서 전체 계정을 검색합니다. 그것은 길다는 프로 시저이기 때문에, 나는 그것을 BackgroundWorker 쓰레드 세트에 넣는다.BackgroundWorker 스레드의 숫자가 맞습니까?

첫 번째 결과 36 초 총 19 개 시간의 동시 스레드의 최대.

는 그럼 난 스레드 초기화 코드 세그먼트를 소모 시간을 재 작성하고 약 14 초 소요되는 시간을 줄이기 위해 관리 ...하지만 스레드 수는 이제 330 개 스레드를 맞았다!

스레드의 거대한 금액은 유해 할 것인가? 예 : 메모리 부족 예외 발생 & c. ?

+1

서버 관리자가 결국 당신을 찾아서 당신을 해칠 것입니다. –

+0

@Hans는 내가 * 것을 일 이후 * 서버의 관리자, 나는 그 무서워 할 필요가 있다고 생각하지 않습니다 ㅎ : P – pepoluan

답변

1

내가 어떤 수단에 의해 VB에서 전문가가 아니지만, 왜 이러한 배경 스레드의 수는 컴퓨터에서 사용 가능한 코어의 수의 몇 배수에 제한하지? 방대한 양의 스레드가 메모리 부족 문제 또는 스레드 부족을 일으킬 수 있습니다.

+0

스레드가 주로 서버 측에서 차단되기 때문에. 스레드 수를 코어 수로 제한하면 스레드가 유휴 상태 인 대부분의 시간을 소비하게됩니다. – pepoluan

+0

정확한 코어 수가 아닌 코어 수의 배수를 말했습니다. 또한, 더 많은 스레드를 만드는 것이 어떻게 방해를 덜어 주는지 모르겠다. –

+0

@Amir 아, 나는 오해하고있다. 요점은 서버가 스레드를 차단했을 때 다른 스레드가 이미 서버에서 검색 한 정보를 계속 처리 할 수 ​​있다는 점이었습니다. 어쨌든, 지금은 스레드 수를 제한하는 실험을하고 있습니다. – pepoluan