C\#다 중 스 레 드 ThreadPool 스 레 드 풀 상세 설명
2613 단어 C#다 중 스 레 드ThreadPool스 레 드 탱크
스 레 드 탱크 는 스 레 드 를 수용 하 는 용기 로 볼 수 있다.하나의 응용 프로그램 은 최대 하나의 스 레 드 풀 만 있 을 수 있 습 니 다.ThreadPool 정적 클래스 는 QueueUserWorkItem()방법 을 통 해 작업 함 수 를 스 레 드 탱크 에 배열 합 니 다.작업 함 수 를 배열 할 때마다 스 레 드 를 만 들 기 를 요청 하 는 것 과 같 습 니 다.
스 레 드 탱크 의 역할:
1.스 레 드 탱크 는 갑 작 스 럽 게 대량으로 폭발 하 는 스 레 드 를 위해 설계 한 것 으로 유한 한 몇 개의 고정 스 레 드 를 통 해 대량의 조작 서 비 스 를 제공 하고 스 레 드 를 만 들 고 소각 하 는 데 소요 되 는 시간 을 줄 여 효율 을 높 인 다.
2.한 스 레 드 의 시간 이 매우 길 면 스 레 드 풀 을 사용 할 필요 가 없습니다.게다가 우 리 는 스 레 드 탱크 에서 스 레 드 의 시작,연결,중단 을 통제 할 수 없다.
일부 사용 예:
실례 1:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ThreadPoolDemo
{
class Program
{
static void Main(string[] args)
{
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(TestThreadPool),new string[] {"drsw","sfs","sdfs"});
Console.ReadKey();
}
public static void TestThreadPool(object state)
{
string[] arry = state as string[]; //
int workerThreads = 0;
int completionPortThreads = 0;
System.Threading.ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads);
Console.Write(DateTime.Now.ToString() + "--" + arry[0] + "----workerThreads=" + workerThreads + "----completionPortThreads=" + completionPortThreads);
}
}
}
위 코드 실행 결과:사용 예 2:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ThreadPoolDemo
{
class Program
{
static void Main(string[] args)
{
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(TestThreadPool));
Console.ReadKey();
}
public static void TestThreadPool(object state)
{
int workerThreads = 0;
int completionPortThreads = 0;
System.Threading.ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads);
Console.Write(DateTime.Now.ToString() + "----workerThreads=" + workerThreads + "----completionPortThreads=" + completionPortThreads);
}
}
}
위 코드 실행 결과:이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.