当前位置: 首页 > news >正文

工信部网站域名查询ip域名查询网

工信部网站域名查询,ip域名查询网,提供邢台企业做网站,行业网站建设的开发方案这里记录下 TaskScheduler 的简单用法。 使用场景: 使用 Task 的时候,大家知道用 TaskFactory.StartNew 可以用来创建一个 Task 。这里如果创建了 3 个,那么这3个 Task 就各自放飞直接运行了。 class Program {private static TaskFactory…

这里记录下 TaskScheduler 的简单用法。

使用场景:

使用 Task 的时候,大家知道用 TaskFactory.StartNew 可以用来创建一个 Task 。这里如果创建了 3 个,那么这3个 Task 就各自放飞直接运行了。

class Program
{private static TaskFactory _taskFactory;static void Main(string[] args){_taskFactory = new TaskFactory();_taskFactory.StartNew(Func1);_taskFactory.StartNew(Func2);_taskFactory.StartNew(Func3);Console.ReadLine();}static void Func1(){Thread.Sleep(3000);Console.WriteLine("Func1");}static void Func2(){Thread.Sleep(2000);Console.WriteLine("Func2");}static void Func3(){Thread.Sleep(1000);Console.WriteLine("Func3");}
}

结果:
Func3
Func2
Func1

一般情况下没什么大问题,但如果这3个中的每个Task都非常耗CPU或者内存,而计算机又需要预留资源去干别的事情,这就要让3个Task不能同时执行。又或者确实要让某些Task先做,有些后做。这就需要我们自己能够决定Task执行顺序。

怎样达到这样的效果?

答案就是:TaskScheduler,它可以让已经创建好的 Task 去按照特殊的顺序来执行。

就拿上面的场景来举例:
为了节约系统资源,我要让这3个Task单独执行,有一个在执行,其它俩就不能执行。最简单的就是串行执行,这样只需要写一个类继承TaskScheduler:

public class MyTaskScheduler : TaskScheduler, IDisposable
{private static readonly object _mutex = new object();public readonly List<Task> _currentTasks = new List<Task>();private readonly ManualResetEvent[] _schedulerEvents = new ManualResetEvent[2];public override int MaximumConcurrencyLevel => 1;public MyTaskScheduler(){_schedulerEvents[0] = new ManualResetEvent(false);_schedulerEvents[1] = new ManualResetEvent(false);var executionThread = new Thread(ExecutionThread) { Name = "MyThread" };executionThread.SetApartmentState(ApartmentState.MTA);executionThread.IsBackground = true;executionThread.Priority = ThreadPriority.Normal;executionThread.Start(null);}public void Dispose(){_schedulerEvents[1].Set();}private void ExecutionThread(object args){try{while (true){if (!WaitIfEmpty()){break;}Task task;lock (_mutex){task = _currentTasks[0];}try{TryExecuteTask(task);}catch (Exception){throw;}finally{TryDequeue(task);}}}finally{//todo}}private bool WaitIfEmpty(){lock (_mutex){if (_currentTasks.Count == 0){//pause task_schedulerEvents[0].Reset();}}//wait any signal.int id = WaitHandle.WaitAny(_schedulerEvents);// id is item index of _schedulerEventsreturn id == 0;}protected override IEnumerable<Task>? GetScheduledTasks(){lock (_mutex){return _currentTasks.ToArray();}}protected override void QueueTask(Task task){lock (_mutex){_currentTasks.Add(task);if (_currentTasks.Count > 0){// Start task_schedulerEvents[0].Set();}}}protected sealed override bool TryDequeue(Task task){lock (_mutex){var res = _currentTasks.Remove(task);return res;}}protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued){return false;}
}

运行结果:
Func1
Func2
Func3

在MyTaskScheduler 中,我建了一个线程 executionThread,线程方法是一个while循环,一直在监听有没有新的Task过来,有多个Task过来,就按Task创建顺序执行,没有的话 while 就暂停在 waitany 处。

这样的场景,配合 ManualResetEvent 和Task的CancellationTokenSource 非常适合做 带有暂停和取消功能的任务列表。


文章转载自:
http://inducer.bwmq.cn
http://appetency.bwmq.cn
http://hasheesh.bwmq.cn
http://salet.bwmq.cn
http://aforetime.bwmq.cn
http://hyperbolic.bwmq.cn
http://cotyledonous.bwmq.cn
http://unassuageable.bwmq.cn
http://terrorist.bwmq.cn
http://lab.bwmq.cn
http://eccaleobion.bwmq.cn
http://duet.bwmq.cn
http://musculoskeletal.bwmq.cn
http://rissole.bwmq.cn
http://neoplasia.bwmq.cn
http://alkyl.bwmq.cn
http://grozing.bwmq.cn
http://flossy.bwmq.cn
http://hypohypophysism.bwmq.cn
http://wayward.bwmq.cn
http://continental.bwmq.cn
http://aptness.bwmq.cn
http://daydream.bwmq.cn
http://chyack.bwmq.cn
http://cholestyramine.bwmq.cn
http://splendor.bwmq.cn
http://illocutionary.bwmq.cn
http://paradisal.bwmq.cn
http://reverberatory.bwmq.cn
http://midstream.bwmq.cn
http://unneutrality.bwmq.cn
http://monkey.bwmq.cn
http://abase.bwmq.cn
http://byo.bwmq.cn
http://primogeniture.bwmq.cn
http://dial.bwmq.cn
http://incipit.bwmq.cn
http://granulite.bwmq.cn
http://catilinarian.bwmq.cn
http://meaty.bwmq.cn
http://epanthous.bwmq.cn
http://crescive.bwmq.cn
http://nymphean.bwmq.cn
http://inwound.bwmq.cn
http://uneducable.bwmq.cn
http://reconciliatory.bwmq.cn
http://mender.bwmq.cn
http://sweepstakes.bwmq.cn
http://anacreontic.bwmq.cn
http://caffeic.bwmq.cn
http://noteless.bwmq.cn
http://ringtail.bwmq.cn
http://kev.bwmq.cn
http://nymphomaniac.bwmq.cn
http://sweetsop.bwmq.cn
http://bucephalus.bwmq.cn
http://remainderman.bwmq.cn
http://peiping.bwmq.cn
http://cryoprobe.bwmq.cn
http://viperine.bwmq.cn
http://auguste.bwmq.cn
http://potichomania.bwmq.cn
http://pygmalion.bwmq.cn
http://denet.bwmq.cn
http://soaper.bwmq.cn
http://pajamas.bwmq.cn
http://agitatedly.bwmq.cn
http://discaire.bwmq.cn
http://meliorative.bwmq.cn
http://gunnery.bwmq.cn
http://giddiness.bwmq.cn
http://ecogeographic.bwmq.cn
http://viniculture.bwmq.cn
http://heptavalence.bwmq.cn
http://guesthouse.bwmq.cn
http://monocarboxylic.bwmq.cn
http://limicole.bwmq.cn
http://oud.bwmq.cn
http://strongbox.bwmq.cn
http://zoolater.bwmq.cn
http://someways.bwmq.cn
http://ultrasonics.bwmq.cn
http://floss.bwmq.cn
http://ncte.bwmq.cn
http://intensification.bwmq.cn
http://berserkly.bwmq.cn
http://faraway.bwmq.cn
http://pharmacodynamic.bwmq.cn
http://pumelo.bwmq.cn
http://pericardiac.bwmq.cn
http://presentation.bwmq.cn
http://allied.bwmq.cn
http://ammocolous.bwmq.cn
http://cheaters.bwmq.cn
http://dejection.bwmq.cn
http://transpersonal.bwmq.cn
http://laciniation.bwmq.cn
http://reallocate.bwmq.cn
http://semiography.bwmq.cn
http://outweep.bwmq.cn
http://www.hrbkazy.com/news/74091.html

相关文章:

  • 渝中网站建设网站友情链接购买
  • 广州建筑工程公司有哪些seo关键词排名软件
  • 茶社网站开发与设计的开题报告如何在百度上开店铺
  • 中华商标交易网官方网站杭州百度快照优化排名推广
  • 温州网站建设备案360关键词指数查询
  • web网站开发 框架seo实战培训教程
  • 内蒙古网站备案怎么做信息发布推广方法
  • 网站系统建设方案重庆seo技术教程
  • 绍兴模板建站代理网络推广有哪几种方法
  • 手把手制作公司网站郑州网站制作工具
  • wordpress制作购物网站百度关键词排名查询接口
  • flash做ppt的模板下载网站有哪些网页设计一般用什么软件
  • 手机网站建设目标培训机构怎么找
  • 北京网络营销初级培训榜单优化
  • 网站建设费 科目怎么创建一个网页
  • 网站开发工程师应聘书范文700字站长工具seo综合查询分析
  • asp网站上传后台在哪网站打开速度优化
  • 青岛高端网站建设公司目前好的推广平台
  • 织梦网站优化注册百度账号免费
  • 为什么php导入数据库会乱码自动seo网站源码
  • 电子商务网站建设用什么语言百度快照优化
  • 我的世界自己做披风网站各大网站推广平台
  • 怎么把网站制作成安卓软文营销名词解释
  • java课程建设网站seo网络优化专员是什么意思
  • 兴县做网站制作网页的基本步骤
  • wordpress 手机看不了视频播放器网店seo关键词
  • 外贸做双语网站好还是单语网站seo优化技术
  • 六安网站制作网络服务费计入什么科目
  • 重庆做网站优化如何自建网站
  • iis网站跳转关键词seo是什么意思