Week 13
Final Assignment / Parallel Composition in Golang
Final Assignment
- Due: end of classes
- Tue, May 5, 11:59pm
- Marc's office
- Logistics
- handout: paper copy of full assignment and problem descriptions
- submit electronically via submit377 script:
$ submit377 final my-final
- The S'mores Problem
- background clip from The Sandlot (S'mores scene): https://youtu.be/XlddDZkkxCc
- implement using Ruby/Rinda where processes coordinate using tuples as semaphores to make S'mores
- The Water Molecule Problem
- chem background: Water molecule made up of two hydrogen atoms and one oxygen atom
- implement using Golang, represent atoms as goroutines that must coordinate to form a water molecule (also a goroutine)
Parallel Composition in Golang
- this is ongoing research I've been doing with my RAs going back to before the pandemic
- recall Legoland as implemented in Peter Welch's occam slides: PDF
- implementing Legoland in golang presents a challenge: no PAR!
- demo without PAR
- demo with a PAR
- and some lambdas…
- demo of sort pump with PAR and Replicated PAR
Simulating Models of Concurrency
- Discussion: modeling one model of concurrency with another
- shared memory (critical sections, etc.)
- we've seen implementing semaphores with monitors/condition variables (Java)
- can we model condition variables with semaphores?
- Golang: channels (message passing)
- motto: Don't communicate by sharing memory, share memory by communicating.
- simulate memory accesses with a goroutine?
- Ruby/Rinda: Linda and Tuple Space
- tuples are semaphores!
- immutable so no race conditions / critical sections
- similar perils to using semaphores, but offer more possibilities
- Simulate Linda/TS with another model?
- with combination of dictionaries, nested dictionaries, hashmaps
- shared memory with semaphores
- goroutines to protect access
- other ideas?
- We don't always get to choose our language/library/stack