Verwaltung mehrerer Kommunikationsbeziehungen

Deskriptoren reihum abfragen problematisch, da:

  • umständlich

  • verbraucht unnötig Prozessorzeit (busy waiting)

  • read() i.Allg. blockierend
    (warten auf Ereignis 1, während Ereignis 2 eingetreten ist)

  • „Sammel-Wartepunkt“ erforderlich

  • ähnlich zu guarded commands

Auf mehrere Eingaben warten in CSP bzw. Erlang:


Verwendung von select()

Angabe der entsprechenden Quellen/Ziele über ihre Deskriptornummer

select() call

select() prüft, welche Ereignisse eingetreten sind (legt sich andernfalls schlafen, bis ein Ereignis eintritt oder Timeout abläuft)

Rückgabe

Gibt was zurück sobald ein Descibtor etwas zu lesen bereit stellt.

Implementierung von select()