vault backup: 2025-03-12 11:04:27
This commit is contained in:
parent
cc646c8e2a
commit
d80a37f73e
1 changed files with 20 additions and 1 deletions
|
@ -93,4 +93,23 @@ B.consume() :=
|
|||
> Reading from / writing into the buffer can be very expensive!
|
||||
|
||||
#### (Multiple) Producers/Consumers
|
||||
**Accessing BUF in MUTEX slows down the implementation**
|
||||
**Accessing BUF in MUTEX slows down the implementation**, we would like to have the possibility to read and write from different cells **in parallel**.
|
||||
- we use two arrays FULL and EMPTY of atomic boolean registers, initialized at ff (all zeros) and tt (all ones), respectively
|
||||
- we have two extra semaphores SP and SC, both initialized at 1
|
||||
|
||||
```
|
||||
B.produce(v) :=
|
||||
FREE.down()
|
||||
SP.down()
|
||||
while not EMPTY[in] do
|
||||
IN <- (IN+1) mod k
|
||||
i <- IN
|
||||
EMPTY[IN] <- ff
|
||||
SP.up()
|
||||
BUF[i] <- v
|
||||
FULL[i] <- tt
|
||||
BUSY.up()
|
||||
return
|
||||
|
||||
|
||||
```
|
Loading…
Reference in a new issue