Week 12
Linda and Tuple Space
- Lecture Notes: PDF
- Assignment 6
- Due Thu, April 23
- Versions 2 and 3 from slides 11, 12 of PDF
- (version 1 included in sample code)
- versions from slides 11 and 12 are the versions to implement
- Extra challenge:
- version 3 from slide 23
- run with multiple producers / consumers from the command line
- Tech notes:
- to pass a command line parameter into your ruby program (i.e., so each producer/consumer knows its id), use the
ARGVarray like this:id = ARGV[0]
- then use a for loop from the bash prompt to run multiple producers/consumers:
$ for i in {1..3} > do ruby producer.rb $i & > done - and similarly to launch a different number of consumers
- Demo: Marc will attempt a live demo running multiple producers and consumers from his version 3 – hope this works!
- Tech notes 2:
- alternatively, we could seed TS with producer/consumer id tuples
- instead of passing in command line arguments via
ARGVarray
- then each producer process can
ts.taketheir producer id tuple, and - each consumer process can do the same for their consumer id tuple
- arguably, this is more in the spirit of a Linda/TS program, and less dependent on how different OS's provide support for launching Linda processes with command line arguments.
- Discussion: modeling one model of concurrency with another
- shared memory (critical sections, etc.)
- Golang: channels (message passing)
- Ruby/Rinda: Linda and Tuple Space
- We don't always get to choose our language/library/stack
- Shear Sort (time permitting)
- Lecture notes: PDF