Week 9
Channels, CSP, and Go
Continuing from where we left off last week
Monday: class canceled (Marc at Dome)
Assignment: Dining Java Philosophers
Assign 4
PDF
questions?
due: Fri, Nov 2, 11:59pm (deadline extended!)
Channels (cont'd)
CSP and Go!
Hoare's 1978 CSP paper:
https://spinroot.com/courses/summer/Papers/hoare_1978.pdf
Go implementation of examples from paper:
https://godoc.org/github.com/thomas11/csp
Rob Pike's Google I/O 2012 - Go Concurrency Patterns:
https://youtu.be/f6kdp27TYZs
Peter Welch's slides (in occam, but we will use Go this semester!)
Occam-pi Lecture Notes
Legoland: slide 83-end of basics.pdf
Demo and codewalk of csp-dining-philosophers.go
Go language features highlighted:
channels
select
Design basis for solution in Go: go routines (processes)
room (communicates with philosophers over channels)
for philosophers to enter/leave – at most 4 at a time to prevent deadlocking, 5th philosopher blocks
forks (communicate with philosophers over channels)
philosophers (communicate with forks over channels)