Zirkularpufferimplementierung in C

8

Ich habe Pseudocode gefunden, wie man einen Ringpuffer implementiert.

%Vor%

Was ich nicht verstehe, ist der "Konsum Artikel w." Kommentar, weil ich denke, dass wir mit w = b[out]; w konsumieren, nicht wahr?

    
bruce12 19.09.2011, 22:00
quelle

3 Antworten

9

Mit

%Vor%

Sie greifen nur eine Kopie des zu konsumierenden Gegenstandes. Mit

%Vor%

Sie verschieben den Index des zu konsumierenden Elements und verhindern so, dass erneut darauf verwiesen wird.

In gewisser Weise verbrauchen mehrere Aufrufe von w = b[out]; nicht wirklich den Slot des Puffers, sondern greifen nur darauf zu; while out = (out + 1) % n; verhindert den weiteren Zugriff auf dieses Objekt. Das Verhindern des weiteren Zugriffs auf den Puffergegenstand ist die stärkste Definition des Begriffs "konsumiere den Gegenstand", die ich mir vorstellen kann.

    
Edwin Buck 19.09.2011, 22:11
quelle
1

Diese beiden Zeilen sind beide Teil des konsumierenden Prozesses:

%Vor%

Der erste extrahiert den Wert und der zweite erhöht den out-Index. Der Kommentar bezieht sich auf die zuvor zwei Zeilen.

    
Heisenbug 19.09.2011 22:06
quelle
0

Ja, weil es dann außerhalb des Puffers ist, was die folgende Reihe sagt, ist leer. Dann können wir w.

verarbeiten     
nulvinge 19.09.2011 22:04
quelle