diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-01-01 17:04:37 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-01-01 17:04:37 -0800 |
commit | 2a4088119cf41175457414dfa59bd4064b8f0562 (patch) | |
tree | 64fe184e399f9870ebd481a90eec34d51e5dff68 /archive/2.vm/channel.mu | |
parent | 23fd294d85959c6b476bcdc35ed6ad508cc99b8f (diff) | |
download | mu-2a4088119cf41175457414dfa59bd4064b8f0562.tar.gz |
5852
Diffstat (limited to 'archive/2.vm/channel.mu')
-rw-r--r-- | archive/2.vm/channel.mu | 45 |
1 files changed, 0 insertions, 45 deletions
diff --git a/archive/2.vm/channel.mu b/archive/2.vm/channel.mu deleted file mode 100644 index 4a553148..00000000 --- a/archive/2.vm/channel.mu +++ /dev/null @@ -1,45 +0,0 @@ -# example program: communicating between routines using channels - -def producer sink:&:sink:char -> sink:&:sink:char [ - # produce characters 1 to 5 on a channel - local-scope - load-inputs - # n = 0 - n:char <- copy 0 - { - done?:bool <- lesser-than 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-inputs - { - # 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 -] |