이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 26065|회답: 2

[출처] .net/C# 스레드 풀 사용에 대한 간략한 분석 스레드풀

[링크 복사]
게시됨 2017. 6. 21. 오전 9:43:20 | | | |
스레드 풀이란 무엇인가요? 왜 스레드 풀을 사용하나요? 스레드 풀은 어떻게 사용하나요?

1. 스레드 풀이란 무엇인가요?

        .NET 프레임워크의 ThreadPool 클래스는 작업 실행, 작업 항목 전송, 비동기 I/O 처리, 다른 스레드를 대기하고 타이머를 처리하는 데 사용할 수 있는 스레드 풀을 제공합니다. 그렇다면 스레드 풀이란 무엇일까요? 스레드 풀은 실제로 스레드 객체를 저장하는 '풀'이며, 풀 내 최소 및 최대 스레드 수를 설정하거나 실행할 메서드를 큐잉하는 등의 기본 메서드를 제공합니다. ThreadPool은 정적 클래스이므로 객체를 생성하지 않고도 직접 사용할 수 있습니다.

2. 왜 스레드 풀을 사용하나요? 이점은 무엇인가요?

        마이크로소프트 공식 웹사이트에는 다음과 같이 나와 있습니다: 많은 애플리케이션이 이벤트 발생을 기다리며 잠든 상태의 많은 스레드를 생성합니다. 또한 주기적으로 깨어나 변경 또는 업데이트된 상태 정보를 폴링하기 위해 휴전 모드에 들어가는 스레드도 많습니다. 스레드 풀을 통해 시스템이 관리하는 워커 스레드 풀을 통해 스레드를 더 효율적으로 사용할 수 있게 해줍니다.

        간단히 말해, 모든 새 스레드는 메모리 공간과 다른 자원을 차지해야 하며, 너무 많은 새 스레드가 있어서 많은 스레드가 휴면 상태이거나 자원이 해제되기를 기다리고 있습니다. 데이터 새로고침 등 주기적으로 작은 작업만 하는 스레드가 많아 너무 낭비적이고, 실제 프로그래밍에서 많은 수의 스레드가 갑자기 발생해 짧은 시간 내에 끝나는 경우도 드뭅니다. 따라서 스레드 풀 개념이 제안되었습니다. 애플리케이션이 스레드 풀에 다시 요청을 하면, 대기 중인 스레드가 활성화되어 새 스레드를 생성하지 않고 작업을 실행하여 많은 오버헤드를 절감합니다. 시스템은 스레드 수가 최대 스레드 수에 도달했을 때만 자동으로 스레드를 파괴합니다. 따라서 스레드 풀을 사용하면 큰 생성 및 폐기 비용을 피할 수 있고, 성능과 안정성이 향상되며, 둘째로 개발자가 스레드를 시스템 관리에 넘겨 다른 작업에 집중할 수 있습니다.


3. 스레드 풀은 어떻게 사용하나요?

실제로 스레드 풀은 다음과 같이 매우 간단하게 사용할 수 있습니다

a. 최대 스레드 풀과 최소 스레드 풀 설정:

ThreadPool.SetMaxThreads (int workerThreads, int completionPortThreads)
동시에 활성화될 수 있는 스레드 풀의 요청 수를 설정합니다. 이 수보다 큰 모든 요청은 스레드 풀 스레드가 사용 가능해질 때까지 대기열에 남아 있습니다. 최소 스레드 수를 설정할 수도 있습니다.

b. 스레드 풀에 작업 추가:

ThreadPool.QueueUserWorkItem(new WaitCallback(메서드 이름));

또는
ThreadPool.QueueUserWorkItem(new WaitCallback(메서드 이름), parameter);

예를 들어, 스레드 풀에서 최대 5개의 스레드가 메서드를 60번 실행한다면, 5년간의 총 급여는 다음과 같습니다:



스레드 풀링을 사용하지 않으면 Run() 메서드를 비동기적으로 실행하려면 60개의 스레드를 열어야 할 수도 있는데, 이는 공간 자원 낭비입니다. 이제 최대 5개의 스레드를 사용하며, 1초 만에 실행할 수 있고, 효율성과 성능이 매우 우수합니다.





이전의:바이두 지도 전체 화면 코드 (div 전체 화면 코드)
다음:알리바바 클라우드의 불법 URL 차단 처리 공지
 집주인| 게시됨 2017. 6. 21. 오전 9:47:12 |

스레드 풀은 다음과 같은 장점을 가지고 있습니다:

1. 멀티스레딩에서는 스레드 풀이 생성하는 스레드 수를 줄이고, 스레드 풀 내 스레드를 합리적으로 재사용할 수 있습니다. 스레드 풀에 스레드가 있는 스레드들은 할당을 기다리는 상태에 있기 때문입니다.

2. 수명이 짧은 스레드를 관리하고 유지할 필요가 없으며, 스레드가 생성될 때 자원을 할당하고 작업을 완료하면 자원을 해제할 필요가 없습니다.

3. 스레드 풀은 현재 시스템 특성에 따라 풀 내 스레드를 최적화합니다.

스레드 풀의 단점:

작업을 스레드 풀에 넘겨 완료하게 한 후에는 스레드의 우선순위를 제어하거나 스레드 이름 등 다른 정보를 설정할 수 없습니다. [하지만 스레드 풀에 넣기 전에 다듬기 위해 레이어를 추가할 수 있습니다]

게시됨 2017. 12. 6. 오전 11:28:49 |
먼저 표시해 두면 나중에 배울 수 있습니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com