9 Stimmen

Was ist *deterministische Gleichzeitigkeit*?

Ich habe gehört, dass es 3 Arten von Gleichzeitigkeit gibt.

  1. Deterministische Gleichzeitigkeit
  2. Gleichzeitigkeit der Nachrichtenübermittlung
  3. Gleichzeitigkeit im geteilten Zustand

Ich kenne #2 (=Schauspielermodell) und #3 (=allgemeines Einfädeln), aber nicht #1. Was ist das?

10voto

axel22 Punkte 31648

Deterministische Gleichzeitigkeit ist ein Modell für nebenläufige Programmierung, bei dem Programme, die in diesem Modell geschrieben wurden, die folgende Eigenschaft haben: Für einen gegebenen Satz von Eingaben sind die Ausgabewerte eines Programms für jeden Ausführungsplan gleich. Das bedeutet, dass die Ausgaben des Programms ausschließlich von den Eingaben des Programms abhängen.

Es gibt Möglichkeiten, diese Eigenschaft zu gewährleisten. Eine der Möglichkeiten ist die so genannte Einzelzuweisungsprogrammierung, bei der Variablen nicht initialisiert werden müssen, sondern höchstens einmal zugewiesen werden dürfen. Das Lesen einer nicht initialisierten Variablen wird so lange verzögert, bis ihr ein Wert zugewiesen wird (möglicherweise durch einen anderen Thread). Die Programmiersprache Mozart unterstützt dies.

Eine andere Möglichkeit ist die Analyse der Eigentümerschaft, um festzustellen, welche Threads die verschiedenen Verweise "besitzen", und um sicherzustellen, dass keine 2 Threads zur gleichen "Zeit" in den Verweis schreiben, so dass es keine Datenwettläufe gibt.

0voto

Wyzard Punkte 32772

Ich habe den Begriff noch nie gehört, aber Koroutinen kommen mir in den Sinn. Sie bieten keine "echte" Gleichzeitigkeit in dem Sinne, dass nur eine Routine zu einem bestimmten Zeitpunkt ausgeführt wird, aber sie sind gleichlaufend in dem Sinne, dass eine Gruppe von interagierenden Coroutines alle Fortschritte machen können, ohne auf das Ende der anderen warten zu müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X