Do You Like DAGs?
Understanding Communicating Sequential Processes, (Directed) Acyclic Graphs, and the select Operator
After much discussion with Roger Peppe (@rogpeppe) following my speech at gophercon, I thought it might be best to clarify my thoughts on and understanding of how to avoid deadlocks in go (using CSP, DAG's and select).
Damian Gryski (@dgryski) provided a link to a nice summary of the conditions necessary for a deadlock:
- mutual exclusion
- hold and wait or partial allocation
- no pre-emption
- resource waiting or circular wait