Files
@ 9b5ea2f879a4
Branch filter:
Location: CSY/reowolf/testdata/parser/positive/15.pdl - annotation
9b5ea2f879a4
431 B
text/plain
Implement MPSC queue
Multiple producer, single consumer queue with the purpose of acting
as the inbox for components.
Multiple producer, single consumer queue with the purpose of acting
as the inbox for components.
1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 2982ea49738a 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 | #version
import std.reo;
composite main(out c) {
channel ao -> ai;
channel bo -> bi;
channel axo -> axi;
channel zo -> zi;
new sync_component(ai, bo);
new replicator(bi, {axo, c});
new consensus({axi, zi}, ao);
new generator(zo);
}
primitive generator(out z) {
while (true) {
synchronous (msg x) {
if (x == null) {
put(z, x);
assert !fires(x);
} else {
put(z, x);
assert fires(x);
}
}
}
}
|