A lock-free mechanism is provided for successfully passing messages between
processes even if a process is preempted while sending or receiving a
message. Messages are communicated between processes using a mailbox data
structure stored in memory shared by the processes, without the use of
locks or other mutual exclusion entities that would otherwise limit
concurrent delivery and receipt of messages placed in the data structure.
The data structure in the illustrative embodiment includes one or more
message slots for storing messages placed in the data structure and a
number of state variables for inserting messages into and removing
messages from the message slots. A process sends or retrieves messages by
manipulating the state variables using indivisible atomic operations. This
ensures that a process cannot be preempted from message passing until it
finishes executing the atomic instruction. The method and mechanism have
particular value in distributed shared memory (DSM) and non-uniform memory
access (NUMA) machines.
Eine Verriegelung-freie Einheit wird für Anzeigen zwischen Prozesse erfolgreich führen zur Verfügung gestellt, selbst wenn ein Prozeß beim Senden oder Empfangen einer Anzeige preempted. Anzeigen werden zwischen Prozessen mit einer Briefkastendatenstruktur mitgeteilt, die im Speicher gespeichert wird, der durch die Prozesse, ohne den Gebrauch der Verriegelungen oder anderer gegenseitiger Ausschlußwesen, die, geteilt wird anders gleichzeitige Anlieferung und den Empfang der Anzeigen begrenzen würden, die in die Datenstruktur gelegt wurden. Die Datenstruktur in der illustrativen Verkörperung schließt einen oder mehr Anzeige Schlitze für die Speicherung der Anzeigen mit ein, die in die Datenstruktur und in eine Anzahl von Zustandvariablen für das Einsetzen der Anzeigen in und das Entfernen der Anzeigen von den Anzeige Schlitzen gelegt werden. Ein Prozeß sendet oder holt Anzeigen zurück, indem er die Zustandvariablen mit unteilbaren Atombetrieben manipuliert. Dieses stellt sicher, daß ein Prozeß nicht preempted von der überschreitenen Anzeige kann, bis er beendet, die Atomanweisung durchzuführen. Die Methode und die Einheit haben bestimmten Wert in verteiltem geteiltem Gedächtnis (DSM) und in den nichtgleichförmiqen Maschinen des Speicherzugriffs (NUMA).