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