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