Polling (Informatik)
# Polling (Informatik)

Polling ist in der Informatik der Ausdruck für eine zyklische Abfrage, die den Status von Hard- oder Software oder das Ereignis einer Wertänderung ermittelt.

## Verwendung

Hardware, deren Status benötigt wird, besteht häufig aus Ports elektrischer Schaltungen, Schnittstellen oder externen Geräten. Software-Zustände, die häufig abgefragt werden, sind Dateisperren auf anderen Rechnern oder Semaphore.

Ein möglicher Zweck des Pollings ist das aktive Warten auf Zustandsänderungen, auch Spinning genannt. Eine andere Form ist die Abfrage jeweils einmal in einem Abtastzyklus, oder die Abfrage nach jeweils einer anderen Aktivität.

Beispiele für die Nutzung von Polling sind der Sendeaufruf und der Hotfolder.

## Vor- und Nachteile

Polling ist unter folgenden Bedingungen sinnvoll:

* Das einfache explizit serielle und bestimmbare Verhalten von Polling-Programmierungen kann gegenüber potentiell komplexeren parallelen Alternativen erwünscht sein.
* Es handelt sich um eine sehr schnelle Abfrage beispielsweise einer Hardwareanschaltung, die binnen Mikrosekunden den gewünschten Zustand einnimmt.
* Es ist eine zyklische Aktivität vorhanden, in der das Polling stattfinden kann, während alternative Lösungen mehr Aufwand erfordern. Dies ist oft bei zyklischen Regelungen der Fall.
* Es existieren keine weiteren Verbindungen zum Partner außer der Abfragemöglichkeit. Das ist etwa bei lose gekoppelten Systemen gegeben, beispielsweise beim Abfragen, ob eine Datei auf einem Dateisystem (gegebenenfalls auf einem entfernten Rechner) existiert oder freigegeben ist, die von einem anderen Programm bereitgestellt wird oder gesperrt ist.

Nachteile:

* Durch Polling ist häufig die Leistungsfähigkeit von Programmen nicht-deterministisch (z. B. variierende FPS) und meistens geringer als mit Alternativlösungen.
* Die Effizienz bei der Verwendung von Systemressourcen kann signifikant geringer sein als Alternativansätze. Beispielsweise kann eine naive Polling-Implementierung, z. B. ein mit maximaler Geschwindigkeit pollendes Programm, die Systemlast auf 100 % treiben (mit unnötigem Stromverbrauch und Abwärme), wogegen eine Event-basierte- oder Hardwareinterrupt-Lösung praktisch keine Systemressourcen verbraucht.

## Alternativen

Zu Polling gibt es folgende Alternativen (meistens dem Konzept Inversion of Control folgend), deren Einsatzmöglichkeiten jeweils von den Hard- und Softwaregegebenheiten abhängen:

* Interruptsteuerung, insbesondere bei Hardwareanschaltungen.
* Ereignissteuerung und Rückruffunktionen um z. B. Benutzerinteraktionen zu verarbeiten,
* Pushing von Daten, also das (unter Umständen ständige) unaufgeforderte Senden
* Pulling von Daten, also das gezielte, sporadische Abfragen von Daten
* Einsatz eines Schedulers eines Echtzeitbetriebssystems, insbesondere für Semaphorenabfrage (Monitor) oder für die Prozesssynchronisation mit wait/notify.

Nachteil der meisten dieser Alternativen ist, dass dies Techniken der parallelen Programmierung sind, und damit potentielle Risiken und erhöhte Komplexität gegenüber dem explizit seriellen Polling haben.

