about summary refs log blame commit diff stats
path: root/mu
blob: 964816f3bd5ff9245e7a8fb1c9a0f68b7ccc5b84 (plain) (tree)
class="nv">n, 5 break-unless done? # other threads might get between these prints $print [produce: ], n, [ ] sink <- write sink, n n <- add n, 1 loop } close sink ] def consumer source:&:source:char -> source:&:source:char [ # consume and print integers from a channel local-scope load-ingredients { # read an integer from the channel n:char, eof?:bool, source <- read source break-if eof? # other threads might get between these prints $print [consume: ], n:char, [ ] loop } ] def main [ local-scope source:&:source:char, sink:&:sink:char <- new-channel 3/capacity # create two background 'routines' that communicate by a channel routine1:num <- start-running producer, sink routine2:num <- start-running consumer, source wait-for-routine routine1 wait-for-routine routine2 ]