Wir betrachten zwei Prozesse, die „Produzent“ bzw. „Konsumer“ genannt werden. Der Produzent ist ein zyklischer Prozess und jedes Mal, wenn er seinen Zyklus durchläuft, produziert er eine bestimmte Menge an Informationen, die vom Verbraucher verarbeitet werden müssen. Auch der Konsument ist ein zyklischer Prozess und kann jedes Mal, wenn er seinen Zyklus durchläuft, die nächste Information so verarbeiten, wie sie vom Produzenten produziert wurde. Ein einfaches Beispiel ist ein Rechenprozess, der als „Informationsteile“ Bilder von Lochkarten erzeugt, die von einer Lochkarte gestanzt werden, die die Rolle des Verbrauchers spielt.[1]
Ein Produzent erstellt Elemente und speichert sie in einer Datenstruktur, während ein Verbraucher Elemente aus dieser Struktur entfernt und sie verarbeitet.
Kontextualisierung des ProblemsWenn der Verbrauch größer als die Produktion ist, leert sich der Puffer (Datenstruktur) und der Verbraucher hat nichts zu konsumieren
Wenn der Verbrauch geringer ist als die Produktion, füllt sich der Puffer und der Produzent kann keine weiteren Artikel hinzufügen. Dies ist ein klassisches Problem namens begrenzter Puffer.
Gehen Sie zur Umsetzung
Code-Link: https://github.com/jcelsocosta/race_condition/blob/main/producerconsumer/buffer/producerconsumer.go
Referenz
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3