У меня есть приложение, которое будет читать последовательные пакеты из соединения udp.Эти сообщения должны храниться в некотором виде буфера с их порядковыми номерами для поиска.
Этот «буфер» обслуживается другим потоком, который удаляет сообщение и обрабатывает его.Если порядковый номер пропущен, я должен остановить поток службы, а затем повторно запросить сообщение по другому TCP-соединению.Как только он прибудет, я хочу добавить его обратно в буфер, и поток службы может продолжить.
Так что мне нужно: вставки по ключу, удаления по низшему ключу.Ключ будет представлять собой числовое число с приращением, например, 1,2,3,4, так что будет немного легче отслеживать наибольшее число, поскольку ключ, таким образом, можно увеличивать / уменьшать, избегая необходимости сортировать структуру данных.
My one plan is to use a Dictionary as the buffer, which makes for a simple solution
My other solution uses a set up two queues
Suggestion by zmbg to use SortedList - I am concerned about performance, as hashing would provide faster lookup and insert not?
Мои вопросы:
- В основном я ищу ловушки с точки зрения памяти или производительности, используя словарь для этого решения.На машине, на которой он будет работать, не будет слишком много памяти, но производительность будет иметь немного более высокий приоритет.
- Если это приложение работает весь день, будут ли проблемы с памятью при использовании словаря?
- Есть ли у кого-нибудь мысли по поводу этой или альтернативной реализации этой процедуры.Мне нужно определиться с дизайном, но я не могу протестировать различные решения на производительность, так как у меня не хватает времени, поэтому я решил попробовать теоретический сбор идей и достоинств идей реализации, прежде чем начать.