У меня есть обработчик сообщений с высокой степенью одновременности, получающий заказанные сообщения, и теперь мне нужно обработать неправильно упорядоченные сообщения: если приходит прямое сообщение, оно должно уведомить, а если пришло устаревшее сообщение - оно должно игнорировать его.
Пример: если поступило 1,2,3,5 сообщения - оно должно уведомить о пропущенном сообщении 5го числа,
а если 1,2,3,4,2,5 - он должен уведомлять только об устаревшем сообщении при получении 2 после 4.
Поскольку он высокопроизводительный, он не должен использовать блокировки.
Вот моя текущая реализация - https://codereview.stackexchange.com/q/10329/5334
- Я решил проблему ABA, но не могу решить проблему 1, возможно ложное предупреждение после игнорирования устаревших сообщений: на 1,2,3,4,2,5 - он будет уведомлять о устаревших 2 (после 4), но также может ошибочно уведомлять о пропущенных сообщениях 5го числа.
Есть ли способы исправить это или другие неблокирующие алгоритмы для этой задачи?