加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi的线程安全优先级队列?

发布时间:2020-12-15 03:51:28 所属栏目:大数据 来源:网络整理
导读:我正在寻找在Delphi中实现的优先级队列,在多线程环境中运行良好. 理想的无锁定,或设计用于多线程插入/删除,比单线程实现(我已经拥有)的锁定包装更好. 特殊之处在于,在正常操作中,当顶部(最高优先级项目)更改时,只会添加,删除和通知,而最高优先级项目的“弹出
我正在寻找在Delphi中实现的优先级队列,在多线程环境中运行良好.

理想的无锁定,或设计用于多线程插入/删除,比单线程实现(我已经拥有)的锁定包装更好.

特殊之处在于,在正常操作中,当顶部(最高优先级项目)更改时,只会添加,删除和通知,而最高优先级项目的“弹出”操作应该非常少见.

它将用于看门狗/超时线程监视任务,在其他线程中执行,这些任务预计大部分时间将正常终止,因此只会从队列中添加/删除.超时线程本质上将等待下一个超时事件,因此在最高优先级事件发生变化时需要通知.

任务由脚本处理,可随时安全终止.

如果比优先级队列有更好的算法,那也可能是一个很好的答案!

编辑:遵循马丁·詹姆斯的话,另一个特点是有不同的超时值相对较少,而对于每个超时值,问题就成为FIFO队列的问题.

解决方法

Julian Bucknall(“Tomes of Delphi:算法和数据结构”的作者)最近宣布在他的 Blog中发布了一个Delphi XE版本的 EZDSL(一个Delphi Structures Library).

不幸的是,TThreadsafePriorityQueue(在EZDSLPQu.PAS中实现)是基于锁的.

我不能分享好消息,而我的另一个意图是呼吁他回答这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读