У меня есть приложение, которое будет считывать последовательные пакеты из соединения 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?
Мои вопросы:
- В основном я ищу ловушках с точки зрения памяти или производительности с использованием словаря для этого решение. Аппарат, который будет запускать его, не имеет слишком большой памяти, но пропускная способность имеет несколько более высокий приоритет.
- Если это приложение работает весь день, будут ли возникать проблемы с памятью при использовании словаря?
- У кого-нибудь есть мысли по поводу этой или альтернативной реализации этой процедуры. Я должен принять решение о дизайне, но я не могу тестировать различные решения для производительности, поскольку у меня недостаточно времени, поэтому я решил попробовать теоретический сбор идей и достоинств идей внедрения до того, как я начну.
У вас действительно есть служба, которая использует * оба * UDP и TCP? Это звучит странно. Почему бы вам просто не использовать TCP в первую очередь, если вам нужны все пакеты, и вы нуждаетесь в них по порядку? – svick
Также вы используете .Net 4.0? – svick
@svick Я использую .Net 2.0, но если решение требует .Net 4.0, я могу посмотреть, возможно, обновить соответствие всего кода .Net 4.0. – Vort3x