2010-10-19 1 views
1

Я создаю программу, которая прослушивает видеопотоки через многоадресную рассылку. Прослушивание одного канала с помощью Mono в Linux отлично работает, но при прослушивании 15 каналов падают пакеты. Запуск кода в Windows .NET не отбрасывает пакеты, и прослушивание каналов с помощью программы C в Linux не отбрасывает пакеты. Есть ли что-то, что я мог бы сделать, чтобы оптимизировать это?Моновыбрасывающие пакеты при получении многоадресной рассылки

ответ

2

В зависимости от того, какой механизм вы используете, код мудрый, вы не сможете быстро захватить пакеты. Это приведет к падению многоадресных данных, которые по своей природе ненадежны. Без дополнительной информации о применяемом механизме, вам сложно дать более конкретный совет.

Обновления на основе комментариев:

Если у вас есть поток на приемник и более потоков, чем процессоры, вы можете быть oversubscribing ваших потоков, в результате чего много дорогостоящего переключения контекста. Это может привести к сбросу пакетов.

+0

Я создаю UdpClient, используя .Client.Bind в адресе многоадресной рассылки, затем вызывая BeginReceive. В обратном вызове я помещал полученные данные в очередь. Это происходит по собственной теме. –

+0

Вы были правы в том, что являетесь ресурсом ОС. Каждый процесс занимает 100% ядра. –

+0

Рад слышать, что это было что-то легкое для диагностики! –