我正在尋找一個在Delphi中實現的優先級隊列,它可以在多線程環境中很好地工作。東西不是圍繞一個單線程執行鎖定包裝(我已經有)更好Delphi的線程安全優先級隊列?
理想的無鎖的,或專爲多線程插入/刪除。
特殊性在於,在正常操作中,只有在頂級(最高優先級項目)發生更改時纔會添加,刪除和通知,而最高優先級項目的「彈出」操作應該非常少見。
將它用於監視/超時線程監視任務,在其他線程執行,這些任務預計正常終止的大部分時間,所以他們只會被添加/刪除從隊列中。超時線程本質上將等待下一個超時事件,因此在最高優先級事件發生變化時需要通知。
這些任務由腳本處理,可以在任何時候安全地終止。
如果有比這個優先級隊列更好的算法,它們也可能是很好的答案!
編輯:在Martin James發表評論之後,另一個特性是相對較少的不同超時值,並且對於每個超時值,問題都變成了FIFO隊列的問題。
爲什麼「圍繞單線程實現鎖定包裝」對於此任務來說不夠好? – Pol 2011-12-20 08:34:55
使基於鎖的解決方案不合適的性能約束是什麼? – 2011-12-20 08:35:25
@Pol:這還不夠好,因爲我已經有了一個(正如帖子中所說的) – 2011-12-20 08:56:17