using Amib.Threading; //nuget安装SmartThreadPool
using System;
using System.Threading;
namespace Magic.Sample
{
class Program
{
// SmartThreadPool网址 https://github.com/amibar/SmartThreadPool
static void Main(string[] args)
{
#region 这个例子将演示传入数个参数并且等待运行然后传出的全过程
/*
SmartThreadPool特性如下:
池中的线程数量会根据负载自动增减
任务异步执行后可以返回值
处于任务队列中未执行的任务可以取消
回调函数可以等待多个任务都执行完成后再触发
任务可以有优先级(priority)
任务可以分组
支持泛型Action<T> 和 Func<T>
有性能监测机制
*/
/*
SmartThreadPool stp = new SmartThreadPool();
IWorkItemResult<string> resultCallback = stp.QueueWorkItem(
new Amib.Threading.Func<string, string, string>(GetResultstring), "hello ", "world"
);
DateTime dt1 = DateTime.Now;
Console.WriteLine("操作开始...");
stp.Start();
stp.WaitForIdle();//等待该实例下的所有结果返回
Console.WriteLine(resultCallback.Result);
DateTime dt2 = DateTime.Now;
var t= DateHelper.DateDiff(7, dt1, dt2);
Console.WriteLine("操作结束,耗时 {0} 毫秒", t);
stp.Shutdown();
*/
#endregion
#region 这个例子将演示一批参数的传入一批线程并且等待执行结束返回值
/*
SmartThreadPool stp2 = new SmartThreadPool();
List<IWorkItemResult> t_lResultItem = new List<IWorkItemResult>();//不对IWorkItemResult定义其类型,其结果需要自己做类型转换
for (int i = 0; i < 100; i++)
{
t_lResultItem.Add(stp2.QueueWork
C#多线程框架SmartThreadPool使用示例
最新推荐文章于 2022-04-09 18:32:52 发布