Hello,
Voila mon problème, ca fait bien une semaine que je suis dessus...
J'ai écrit un soft qui écoute une socket UDP, qui reçoit des paquets et qui les écrit sur disque. Et ce, pour plusieurs port donnés.
Le tout est en C++, sous linux, et utilise la libraire pthread. A chaque port UDP ecouté il y a deux threads: un qui ecoute la socket l'autre qui se charge d'ecrire sur disque le buffer quand il est suffisament gros.
Le probleme est que je perd des paquets, et je connais la cause: c'est la fonction write() qui s'effectue dans l'autre thread . Si je commente l'appel à la fonction write() alors je ne perd aucun paquet.
Pourtant cet appel système est censé etre ré-entrant, non ? Il ne devrait pas y avoir de soucis...
Je précise que les débits ne sont pas tres important: je commence à avoir des pertes à partir de 2 ports UDP qui envoient chacun à 20 Mo/s. Ce sont des petits paquets qui partent: de 300 a 500 octets. Et si j'augmente la taille des paquets, les pertes disparraissent.
Je commence à secher....