Datenbuffering zwischen Threads
Submitted by rac on 13 January, 2008 - 14:30.
- Zum Austauschen von Daten zwischen Threads
- geht in verschiedenen Modellen
![]()
Wichtige Begriffe:
- Buffer
- Lock
- Suspend / resume Mechanismus
- Zustandsinfo (Status): wieviel Daten sind im Buffer
-
producer() {
-
...
-
lock shared buffer
-
place results in buffer
-
unlock buffer
-
wake up any consumer threads
-
...
-
}
-
consumer() {
-
...
-
lock shared buffer
-
while buffer is empty
-
release lock and sleep
-
wake up and reacquire lock
-
fetch data from buffer
-
unlock buffer
-
...
-
}
Was Passiert, wenn der Produzent schneller als der Konsument ist?
Dafür gibt es Double Buffering!
Wann kann es angewendet werden:
- wenn Threads miteinander Daten tauschen
- Thread gegenüber anderem Thread sowohl Produzent als auch Konsument
- z.B. bei Peer Modell
![]()
»
- Printer-friendly version
- Download PDF
- 2184 reads

Post new comment