about summary refs log tree commit diff stats
path: root/archive/2.vm/channel.mu
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-01-01 17:04:37 -0800
committerKartik Agaram <vc@akkartik.com>2020-01-01 17:04:37 -0800
commit2a4088119cf41175457414dfa59bd4064b8f0562 (patch)
tree64fe184e399f9870ebd481a90eec34d51e5dff68 /archive/2.vm/channel.mu
parent23fd294d85959c6b476bcdc35ed6ad508cc99b8f (diff)
downloadmu-2a4088119cf41175457414dfa59bd4064b8f0562.tar.gz
5852
Diffstat (limited to 'archive/2.vm/channel.mu')
-rw-r--r--archive/2.vm/channel.mu45
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
-]