gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:39:10 25 4
gpt4 key购买 nike

我正在寻找一个在 Delphi 中实现的优先级队列,它可以在多线程环境中很好地工作。

理想情况下是无锁的,或者专为多线程插入/删除而设计,比单线程实现的锁定包装器(我已经有了)更好。

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

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

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

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

编辑:根据 Martin James 的评论,另一个特殊之处是不同的超时值相对较少,对于每个超时值,问题就变成了 FIFO 队列的问题。

最佳答案

Julian Bucknall (《Tomes of Delphi:算法与数据结构》作者)最近宣布发布 EZDSL 的 Delphi XE 版本(Delphi 结构库)在他的 Blog 中.

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

我忍不住要分享这个好消息,我的另一个目的是呼吁他为回答问题做出贡献。

关于delphi - Delphi 的线程安全优先级队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8572436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com