当前位置:  技术问答>linux和unix

急求 公平的兼顾优先级的任务分发算法!!

    来源: 互联网  发布时间:2017-03-02

    本文导语:  想做一个任务分发算法,任务区分优先级(大概可以分为140个级别),希望优先级高的任务尽可能先执行,但是又要兼顾优先级低的任务能够也得到执行。并发时任务个数在几十万。目前自己有两个想法: (1)添加...

想做一个任务分发算法,任务区分优先级(大概可以分为140个级别),希望优先级高的任务尽可能先执行,但是又要兼顾优先级低的任务能够也得到执行。并发时任务个数在几十万。目前自己有两个想法:
(1)添加任务时根据任务的优先级给每个任务对应一个执行优先级,每个任务还携带一个等待时间的属性,当任务等待时间超过阈值时,其执行优先级升高一级,然后按照执行优先级排序,执行任务时直接从队列队首取下一个任务执行就行。
   缺点:链表操作太频繁,每次添加任务都要遍历链表、排序,任务数很大时效率很低;
(2)对所有优先级分段,每一段归为一类大的优先级任务(比如0~~10级的任务都入同一个队列,11~~30级的任务入另一个队列),在这个队列中任务的优先级一样,按照队列的优先级和执行次数来均衡每个队列执行情况。
   缺点:如果某个队列中的任务很多时,反而会有后来的低优先级的任务被先执行。

呵呵,菜鸟级的水平,以上自己的初步想法,可行性有待验证,哪位大师有更好的想法请不吝指教,谢谢!

|
两种方法结合起来好

分成14个队列-10级一个队列--有新任务直接放在相应队列尾
当某个任务等待超时时,拿出来放在高一个优先级的队列尾部

优点:新任务插入方便
缺点:10个级别一个队列,队列内优先级模糊区分


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于LOCAL接口和REMOTE接口的同时兼顾的问题
  • GUI开发如何兼顾KDE和Gnome环境? 当然要用C/C++开发了
  • 探讨:android项目开发 统筹兼顾 需要考虑的因素


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3