逻辑划分线程池-任务池

服务端编程里,线程池的使用非常普遍。往往是按照逻辑划分为不同的线程池。这种做法存在一个问题,对每个线程池的利用都是局部的,缺少一个全局限制的目标。

 

希望能有一种任务池的机制,多个任务池共享一个线程池,每个任务池可配置并发执行的能力,主要有两个参数,固定为该任务池服务的线程数和峰值时可弹性增加的线程数。

 

在网上发现类似的两篇文章,放翁(文初)的《逻辑划分线程池》和淘宝博客上一篇《支持配额的共享线程池》。看了一下,对任务池(暂且都叫任务池)的看法都差不多,前者的“保留数”和后者“固定配额”都是固定分配给一个任务池的线程数。前者的“限制数”和后者的“弹性配额”是动态申请数。但是在实现,两者有一点区别(更详细的大家可把他们的代码下来研究下)。下面简单说一下两者的实现。

 

前者全局有一个任务队列,提交任务时,判断对应的任务是否能被执行,如果可以则提交到线程池,否则,提交到任务队列。有一个额外的后台提交任务的工作线程,不断从任务队列里取任务,做提交任务的操作,如果任务不能被提交到线程池,则会再放回任务队列。在某些情况下,这个提交任务的工作线程可能遍历整个队列才能找到可以被提交的任务。甚至是在空转,假如任务队列的任务都是不能被提交的。然后还有一个取出的任务为空,睡眠一小段时间,这个时间具体大小也是一个比较难确定的值。

 

        后者也有一个全局的任务队列,提交任务时,判断对应的任务是否能被执行,如果可以则提交到线程池,否则,提交到任务队列。那么,任务队列的任务什么时候再提交到线程池,作者没有使用额外的线程,当提交到线程池的一个任务执行结束后,加了一个顺带从任务队列取任务提交到线程池的操作。注意,在这里,这个提交操作没有再判断该任务是否超过它的配额。作者这里把它简单化了,任务队列是一个优先级的队列,固定配额较大的任务的优先级较高。这种处理方法可能也会导致一种任务的并行执行数超过它的实际配额。

 

看了两者的实现,和自己的需求还是有点距离,前者的后台工作线程在某些情况可能效率比较低,后者的对于任务的限制也存在一些缺陷。两者有一个共同点是通过判断,再把任务提交到线程池,提交到线程池的任务就是可执行的。对于任务池的需求,这种处理方法不太好实现或是实现的不完全。那么能否换个思路,不把任务直接提交到线程池,,只提交取任务的操作到线程池。

 

个人思路:

1. 共享线程池,逻辑划分为任务池,每个任务池配置固定配额和弹性配额。

2. 每个任务池有自己的任务队列,提交到任务池的任务先提交到对应的任务队列。

3. 创建任务池时,如果有固定配额,提交固定配额任务到线程池,固定配额任务不会释放线程,它的操作是不断 从任务队列取任务执行。

4. 提交任务时,判断如果需要执行申请弹性配额,提交弹性配额任务到线程池。弹性配额任务尝试从任务队列取 任务,如果为空则释放线程。

 

这样处理能比较好的实现任务池的需求。多任务队列带来一个额外的好处是,减少对线程池的任务队列的争用。把多个线程池合并成一个任务池,执行任务的线程数也多了,如果底层仍然用一个任务队列,对这个任务队列操作是一个热点。使用多任务队列,不是所有的任务最终都提交到线程池的任务队列,只有需要弹性配额时才提交。

 

郁闷,google-code的密码页面打不来。第一版的实现见附件。

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 头哥数字逻辑---交通灯系统设计是一个用于控制道路交通的系统。这个系统利用数字逻辑设计,实现了交通信号灯的切换控制,从而提高交通效率和安全性。 首先,交通灯系统设计需要考虑不同道路的交通流量和车辆优先级。通过传感器收集道路上的车辆信息,系统可以根据实际情况自动调整信号灯的时长和切换时间。 其次,交通灯系统设计需要考虑不同时段的交通需求。系统可以预先设置不同时段的交通模式,比如高峰期、拥堵期和低峰期。通过预测交通状况和分析历史数据,系统可以自动切换到不同的模式,从而有效地分配交通资源。 此外,交通灯系统设计还需要具备故障检测和报警功能。如果交通灯出现故障或者异常情况,系统可以及时发出警报,并通知维修人员进行处理。这样可以避免因交通灯故障而导致的交通事故和拥堵。 最后,在交通灯系统设计中,还可以考虑一些先进的技术和功能。比如,利用人工智能和机器学习算法,系统可以学习和优化交通模式,提高交通的智能性和适应性。另外,系统还可以与车辆的智能化系统进行互联,实现实时的数据共享和互动,从而更加准确地判断和控制交通流量。 综上所述,头哥数字逻辑---交通灯系统设计是一个基于数字逻辑的交通控制系统,通过合理的信号灯切换控制、时段预测和故障检测等功能,可以提高道路交通的效率和安全性,为人们出行提供更加便利和舒适的交通环境。 ### 回答2: 交通灯系统设计是一个综合利用数字逻辑技术的项目。在这个项目中,我们需要设计一个能够实现按照交通规则进行识别并控制交通流量的交通灯系统。 首先,我们需要通过图像识别技术来识别交通场景中的车辆、行人等交通参与者。通过传感器捕捉到的视频信号,我们可以使用数字逻辑技术对图像进行分析和处理,提取出交通参与者的位置和动态信息。 其次,我们需要根据识别到的交通参与者的位置和动态信息,来判断当前交通灯应该处于什么状态。通过数字逻辑的判断和算法设计,我们可以根据交通规则和场景中的交通参与者来进行切换灯光的决策。 最后,我们需要通过数字逻辑技术实现交通灯的控制。通过控制器和执行器,我们可以根据判断结果来控制交通灯的亮灭和切换。同时,我们也需要考虑到交通灯系统的稳定性和可靠性,以确保交通流量的正常进行。 在整个设计过程中,数字逻辑技术发挥了关键作用。它能够快速处理大量的信号和数据,并通过判断和算法来实现对交通灯系统的控制。同时,数字逻辑还能够提供高精度的决策和准确的切换,从而保证交通流量的安全和有序。 综上所述,头哥数字逻辑在交通灯系统设计中发挥了重要的作用。通过图像识别、判断和控制等一系列数字逻辑技术的综合应用,我们可以设计出一个高效、稳定和安全的交通灯系统。这将有助于优化交通流量,提高道路交通的效率和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值