Thread recv im Hintergrund ausführen (5 answers)
Opened by campbell-bs at 2011-11-30 08:26

campbell-bs
 2011-11-30 08:26
#154544 #154544
User since
2011-11-17
23 Artikel
BenutzerIn
[default_avatar]
Hallo, ich bastel mir momentan ein Programm für die Kommunikation mit einem Server über UDP zusammen. Mein Programm kann ständig Pakete bekommen, die es dann auch verarbeiten soll. Dazu habe ich bisher die recv-Methode von IO::Select alle 5ms über den Tk-Befehl
$mw->repeat(5 => \&receive); aufrufen lassen.
Dies funktioniert auch, erzeugt aber leider eine nicht unerhebliche Prozessorlast (im Programmleerlauf!). Außerdem ist es theoretisch möglich, dass ich so viele UDP-Pakete aufeinmal bekomme, sodass der Puffer nicht mehr ausreicht und Pakete verloren gehen.

Meine Frage ist nun: Gibt es eine Möglichkeit den recv-Befehl ständig im Hintergrund horchen zu lassen, sodass er sich quasi schlafen legt und nur einen bestimmten Callback aufruft, wenn Daten auf der Socket sind? Das Programm sollte natürlich nebenbei weiter laufen können.

View full thread recv im Hintergrund ausführen