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

前端之家收集整理的这篇文章主要介绍了Delphi的线程安全优先级队列?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_0@
我正在寻找在Delphi中实现的优先级队列,在多线程环境中运行良好.

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

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

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

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

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

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

解决方法

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

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

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

猜你在找的Delphi相关文章