2011-09-29 3 views
0

일단 스레드가 처리를 마쳤 으면 스레드를 다시 넣거나 스레드를 삭제하는 것이 더 좋습니까?ThreadPool의 스레드 관리

ThreadPool은 내부적으로 스레드를 저장하고 스레드에게 어떤 요청을 처리 할 수 ​​있도록 대기열을 사용합니까?

나는 C# impl, thread, 소스 코드를 보았는데 이해하기 힘들다. 스레드 풀이 작동하는 방식과 내부 세부 사항을 이해하는 쉬운 구현 방법이 있는지 알고 싶습니다.

+0

@ ThreadPool.QueueUserWorkitem을보아야합니다. 이름에서 알 수 있듯이 스레드 풀에 대해 수행 할 작업 대기열입니다. – bryanmac

답변

0

스레드를 풀에 다시 넣어야할지 아니면 버려야하는지 알고 싶으면 스레드 풀 사용을 알아야합니다. 예를 들어 스레드 풀에서 스레드를 관리하는 것보다 새로운 스레드를 만드는 데 드는 비용이 적시에 적게 사용됩니다. 그런 다음 풀에 보관하십시오. 하지만 5 일 동안 사용하지 않으면 수영장에 보관하지 않을 것입니다.

+0

Meh. .NET 스레드는 저렴합니다. –

+0

그래, 나는 @EstebanAraya에 동의한다. 이유는 GB의 RAM과 가상 메모리가있을 때 주변에 몇 개의 스레드가 놓여있는 것에 대해 걱정할 필요가 있기 때문이다. 내 Windows 사이드 바에는 69 개의 ​​스레드가 몇 주 동안 누적되어 있습니다 (현재 거의 유휴 상태 인 시스템 1116의 현재 스레드). 실제 버그에 대한 걱정은 문제가 아닙니다! –