Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Asynchroner Ausführungsmodus

&pagelevel(3)&pagelevel

Viele Funktionen der Transportschnittstelle können einen Prozess blockieren, wenn sie auf bestimmte Ereignisse warten oder der Datenfluss den Prozess blockiert. Es gibt aber Situationen, in denen der Benutzer dieses Blockieren verhindern will. So dürfen z.B. zeitkritische Anwendungen niemals blockiert werden. In einem anderen Fall möchte der Prozess weiterarbeiten, während er auf ein Ereignis der Transportschnittstelle wartet.

Daher kann jede Funktion, die den Prozess blockieren könnte, in einem speziellen nichtblockierenden (asynchronen) Modus ausgeführt werden. Normalerweise blockiert der t_listen()-Aufruf den aufrufenden Prozess (Server) solange, bis die Verbindung bestätigt wird. Der Server könnte aber auch periodisch mit dem nicht-blockierenden Aufruf t_listen() nachprüfen, ob die Verbindung schon aufgebaut ist. Eingeschaltet wird der asynchrone Modus wird mit dem Parameter O_NONBLOCK für das betreffende Dateikennzeichen. Dies kann mit t_open() beim Öffnen des Transportendpunkts erfolgen oder mit einem Aufruf fcntl(), bevor eine möglicherweise blockierende Funktion der Transportschnittstelle aufgerufen wird. fcntl() kann jederzeit benutzt werden, um den asynchronen Modus an- und auszuschalten.
Alle Programmbeispiele in diesem Kapitel benutzen den voreingestellten synchronen Modus.