C#ThreadPool学习
2021-06-08 17:06
标签:eva for logs 4.0 xamarin 工作项 and clr线程池 ble 提供一个线程池,该线程池可用于执行任务、发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器 线程池中空闲线程数,检索由 GetMaxThreads(Int32, Int32) 方法返回的最大线程池线程数和当前活动线程数之间的差值。 检索可以同时处于活动状态的线程池请求的数目。 所有大于此数目的请求将保持排队状态,直到线程池线程变为可用。 发出新的请求时,在切换到管理线程创建和销毁的算法之前检索线程池按需创建的线程的最小数量。 将方法排入队列以便执行。 此方法在有线程池线程变得可用时执行。 将方法排入队列以便执行,并指定包含该方法所用数据的对象。 此方法在有线程池线程变得可用时执行。 设置可以同时处于活动状态的线程池的请求数目。 所有大于此数目的请求将保持排队状态,直到线程池线程变为可用。 发出新的请求时,在切换到管理线程创建和销毁的算法之前设置线程池按需创建的线程的最小数量。 (1)回调不带参数 运行结果: (2)回调带参数 运行结果: CLR线程池分为工作者线程(workerThreads)与I/O线程(completionPortThreads)两种: (1)workerThreads:工作者线程是主要用作管理CLR内部对象的运作,通常用于计算密集的任务。 (2)completionPortThreads:I/O(Input/Output)线程主要用于与外部系统交互信息,如输入输出。 参考: https://www.cnblogs.com/kissdodog/archive/2013/03/28/2986026.html C#ThreadPool学习 标签:eva for logs 4.0 xamarin 工作项 and clr线程池 ble 原文地址:https://www.cnblogs.com/yaosj/p/10684192.html一.简介
二.主要方法
GetAvailableThreads(Int32, Int32)
GetMaxThreads(Int32, Int32)
GetMinThreads(Int32, Int32)
QueueUserWorkItem(WaitCallback)
QueueUserWorkItem(WaitCallback, Object)
SetMaxThreads(Int32, Int32)
SetMinThreads(Int32, Int32)
三.使用
1.QueueUserWorkItem
private static void fun2()
{
for (int i = 0; i
{
Console.WriteLine($"Thread ThreadId:{Thread.CurrentThread.ManagedThreadId}");
}));
}
}
private static void fun1()
{
for (int i = 0; i
{
Console.WriteLine($"Thread {t} ThreadId:{Thread.CurrentThread.ManagedThreadId}");
}), i);
}
}
四.workerThreads和completionPortThreads
上一篇:C#对文件进行加密解密源码
下一篇:Java流程控制