使用c#怎么实现一个轻量级多线程队列

  介绍

本篇文章给大家分享的是有关使用c#怎么实现一个轻量级多线程队列,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

首先要说的是使用方法,当我设置使用一个线程的时候如下代码:

var  manager =, new  QueueManager (new  QueueConfirguration (1,, 10000,,,, QueueTaskMode.Task,, new  JobPriorityScheduleConfig (DateTime.Now, new 时间间隔(0,1,0)));   manager.Start ();   ,   for  (int 小姐:=,0;,小姐:& lt;, 20;,我+ +)   {   ,manager.AddJob (new  Job(我,(索引),=比;   ,{   Console.WriteLine才能($“线程id: {System.Threading.Thread.CurrentThread.ManagedThreadId},当前序号:{指数}“);   ,}));   }   Console.WriteLine($“主线程ID: {System.Threading.Thread.CurrentThread.ManagedThreadId}“);

输出结果如下

使用c#怎么实现一个轻量级多线程队列

可以看到使用QueueManager类的线程都是ID=4的线程上执行,这是由于我们设置的是一个线程,主线程的ID为1,并且可以看到工作中的代码是异步执行的。当我们将线程数设置成2的时候输出如下

使用c#怎么实现一个轻量级多线程队列

使用其它是不是很简单? ?

<强>那么我分别来讲一下QueueManager类的参数

1。QueueConfirguration类,结构如下。

, public  class  QueueConfirguration : IQueueConfirguration   ,{   ,private  int  taskMaxCount;   ,private  int  taskDelay;   ,private  int 时延;   ,   ,,,///,& lt; summary>   ,,,///,   ,,,///,& lt;/summary>   ,,,///,& lt; param  name=皌askMaxCount"祝辞Thread  count   ,,,///,& lt; param  name=皌askDelay"祝辞thread  free  sleep  interval   ,,,///,& lt; param  name=癲elayTimes"祝辞sleep  times   ,public  QueueConfirguration (int  taskMaxCount, int  taskDelay,, int 时延)   ,{   时间=this.taskMaxCount 才能;taskMaxCount;   时间=this.taskDelay 才能;taskDelay;   时间=this.delayTimes 才能;时延;   ,}   ,   ,public  int  TaskMaxCount  {, get  {, return  this.taskMaxCount,},}   ,   ,public  int  TaskDelay  {, get  {, return  this.taskDelay,},}   ,   ,public  int  DelayTimes  {, get  {, return  this.delayTimes,},}   以前,}

TaskMaxCount:线程数量,TaskDelay:为空闲时线程睡眠时间单女士(位),延迟时间:睡眠次数

2。QueueTaskMode:枚举类型,提供两种多线程使用方式线程和任务

3。JobPriorityScheduleConfig:实现接口IJobPriorityScheduleConfig,用来提升工作的优先级。

各位朋友可能也看到了我使用了一个工作类目前总共有三种工作类型

<李>

工作:无参数无返回

<李>

Job:有参数无返回

<李>

Job:有参数有返回,同时提供执行完成之后返回参数的回调事件。

当然,代码中还有很多地方可以优化,譬如:

<李>

当线程处于睡眠中时,需有工作要执行时的中断。李李

<>

AddJob方法可以加一些重载。

<李>

实现中的事件可以修改为委托,以达到减少一些委托类型的定义。

以上就是使用c#怎么实现一个轻量级多线程队列,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

使用c#怎么实现一个轻量级多线程队列