Я ищу очередь приоритетов, реализованную в Delphi, которая будет хорошо работать в многопоточной среде.
Идеально незакрепленный или разработан для многопоточных вставок/удалений с чем-то лучше, чем заблокированная обертка вокруг однопоточной реализации (которая у меня уже есть).
Специфичность заключается в том, что при нормальной работе будут добавлены, удалены и уведомления, когда изменяется верхний (элемент с наивысшим приоритетом), в то время как операции "поп" элемента с наивысшим приоритетом должны быть очень редкими.
Он будет использоваться для задач мониторинга потока watchdog/timeout, выполняемых в других потоках, ожидается, что эта задача обычно прекращается обычно большую часть времени, поэтому они просто будут добавлены/удалены из очереди. Поток таймаута по существу будет ждать следующего события тайм-аута, следовательно, потребность в уведомлениях, когда произойдет событие с приоритетным приоритетом.
Задачи обрабатываются с помощью сценариев, которые могут быть безопасно завершены в любое время.
Если для этого есть более эффективные алгоритмы, чем приоритетная очередь, они также могут быть хорошими ответами.
Изменить:, следуя замечанию Мартина Джеймса, еще одна особенность заключается в том, что существует относительно мало разных значений тайм-аута, а для каждого значения тайм-аута проблема становится проблемой в очереди FIFO.