Als Nebenläufigkeit bzw. nebenläufiger Programmierung (auf englisch: Concurrency) bezeichnet man das gleichzeitige Ausführen von mehreren Aufgaben, Berechnung, Befehlen etc.
Nebenläufigkeit ist dabei der Oberbegriff, er definiert nicht, wie die Nebenläufigkeit umgesetzt wird. Dies hängt unter anderem davon ab, welche Methoden die gewählte Programmiersprache unterstützt, auf welcher CPU das Programm ausgeführt wird (wie 1-Kern- oder Mehrkern-CPU) oder ob die Ausführung auf mehrere Rechner verteilt wird. Wird das Programm nur auf dem Rechner lokal ausgeführt, dann sind einige Formen der Nebenläufigkeit z.B. Multitasking, Multiprocessing und Multithreading. Auf Mikrocontrollern wie dem RP2040 sind auch Interrupts eine Form von Nebenläufigkeit.
Nebenläufig Programmierung kann herausfordernd sein, weil man keinen linearen Programmablauf mehr hat, was das Nachvollziehen des Programmflusses schwieriger machen kann. Ebenso kann es herausfordernd sein, Daten zwischen den nebenläufigen Programmteilen auszutauschen und dabei sicher zu stellen, dass stets nur die neusten / aktuellen Daten ausgetauscht werden. Des Weiteren macht Nebenläufigkeit ein Programm nicht automatisch schneller.
Nebenläufig Programmierung kann immer dann angewendet werden, wenn ein Problem / eine Berechnung gut in unabhängige Teile aufgeteilt werden kann. Möchte man z.B. für vier Zahlen prüfen, ob es Primzahlen sind, dann wäre dies sehr gut parallelisierbar. Wird auf eine Nutzereingabe gewartet, mit der dann z.B. eine Berechnung ausgeführt und das Ergebnis dann ausgegeben wird, wäre hier Nebenläufigkeit nicht möglich bzw. sinnvoll.
Comments 1