2010-10-19 5 views
1

Je crée un programme qui écoute les flux vidéo sur multidiffusion. L'écoute d'un flux avec Mono sous Linux fonctionne correctement, mais l'écoute de 15 flux supprime des paquets. L'exécution du code sous Windows .NET ne supprime pas les paquets et l'écoute des flux avec un programme C sous Linux ne supprime pas les paquets. Y a-t-il quelque chose que je pourrais faire pour optimiser cela?Mono abandonnant des paquets lors de la réception de beaucoup de multidiffusion

Répondre

2

Selon le mécanisme que vous utilisez, du point de vue du code, il se peut que vous ne capturiez pas les paquets assez rapidement. Cela se traduirait par des baisses de données de multidiffusion, qui de par sa nature même ne sont pas fiables. Sans plus d'informations sur le mécanisme utilisé, il est difficile de vous donner des conseils plus spécifiques.

mise à jour en fonction des commentaires:

Si vous avez un fil par récepteur et plus de threads que les processeurs, vous pouvez être surabonnement vos fils, causant beaucoup de changements de contexte coûteux. Cela pourrait entraîner la perte de paquets.

+0

Je crée un UdpClient, en utilisant .Client.Bind sur l'adresse de multidiffusion, puis en appelant BeginReceive. Dans le rappel, je mets les données reçues dans une file d'attente. Cela arrive sur son propre thread. –

+0

Vous aviez raison d'être une ressource de système d'exploitation. Chaque processus prend 100% d'un noyau. –

+0

Heureux d'entendre que c'était quelque chose de facile à diagnostiquer! –

Questions connexes