2009-08-19 5 views
1

현재 개발중인 응용 프로그램의 코드를 최적화하려고합니다. 현재 구현에서는 새 데이터에 대한 서버를 지속적으로 폴링하는 스레드를 작성합니다. 새 데이터가 발견되면 스레드는 데이터를 검색하기 위해 매번 생성 된 여러 스레드를 생성합니다.C# 스레드 풀링의 실제 이점

나는 thread pooling에 관해 읽고 있었고, 스레드 풀링을 활용하기 위해 코드를 변경하는 것이 눈에 띄는 차이를 가져올 것이라고 생각했습니다.

+0

내 초기 게시글이 혼란 스러웠을 것 같습니다. 처음 오래가는 스레드는 서버를 폴링하고 새 데이터를 사용할 때마다 여러 스레드를 계속해서 생성합니다. 최적화에 관한 나의 질문은 스레드 풀로 연속적으로 여러 개의 스폰 된 스레드를 돌려서 얻는 이득이 무시할 만하다는 것을 알았는지 여부입니다. – Setheron

+0

왜 여러 개의 스레드가 생성되는 것을 방해합니까? 왜 오래 지속되는 폴링 쓰레드에서 그렇게하지 않습니까? –

+0

각 스레드가 실행되는 데 걸리는 시간과 생성되는 빈도에 따라 다릅니다. –

답변

6

폴링을 수행하기 위해 하나의 장기 실행 스레드를 만든 경우 많은 차이를 느끼지 않을 것입니다. 시시 때때로 잠을 자고있는 것 같기 때문에 (타이머 기반 솔루션에 비해) 많은 시간 동안 필요한 것보다 하나 이상의 스레드가 있지만 기본적으로 괜찮습니다.

스레드 풀은 수명이 짧은 작업이 많은 경우 특히 유용합니다. 쓰래드를 시작하는 것은 무료가 아니며 실제 작업이 사소한 경우에는 오버 헤드가 꽤 큽니다. 스레드 풀은 작업 항목을 기다리는 실제 스레드를 계속 유지합니다. 그러면 매우 적은 오버 헤드로 작업 항목을 실행할 수 있습니다.

하나의 장기 실행 작업에서는 오버 헤드가 작업 자체에 소요되는 시간에 비해 중요하지 않으므로 아무런 차이가 없음을 알 수 있습니다.