In Goroutinen implementieren ungepufferte Kanäle einen Blockierungsmechanismus für Empfänger, bis Daten verfügbar sind. Das Verhalten der Blockierung bei Vorhandensein mehrerer Empfänger auf demselben Kanal bleibt jedoch unklar.
Beim Senden eines Werts an einen Kanal mit mehreren Empfängern gibt die Sprache Folgendes an:
Das bedeutet, dass der Empfänger, der letztendlich die Daten empfängt und entsperrt, zufällig ausgewählt wird, ohne eine bestimmte Reihenfolge oder Präferenz. Dies stellt Fairness sicher und eliminiert gleichzeitig die Möglichkeit einer Hungersnot für einen bestimmten Empfänger.
Die Spezifikation der Select-Anweisung gibt Aufschluss über dieses Verhalten:
In diesem Fall Bei ungepufferten Kanälen mit mehreren Empfängern ist die erste Kommunikation, die nach der Zufallsauswahl verfügbar wird, diejenige, die die Daten empfängt und entsperrt.
Bei ungepufferten Kanälen mit mehreren Empfängern erfolgt die Übermittlung von Daten an einen Empfänger zufällig und nicht deterministisch, wodurch Fairness zwischen den Empfängern ohne spezifische Reihenfolge oder Präferenz gewährleistet wird.
Das obige ist der detaillierte Inhalt vonWie funktioniert die Datenbereitstellung in den ungepufferten Kanälen von Go mit mehreren Empfängern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!