toread
http://kilby.stanford.edu/~rvg/352.html
misc
fork STM `par` parallel array types (annotation for nodes) supports nested data parallelism
any group of processes can create any of these types of memory between themselves:
- shared totally ordered
- shared release-acquire ordered
- shared relaxed ordered
any any group of processes can create a channel between themselves with either:
- shared totally ordered
- shared release-acquire ordered
channels are first-class objects and references to them can themselves be passed around, as can references to shared variables, which is how you add a new process to the group sharing memory
notes:
- i guess a shared memory is like a collection of shared channels, with one channel for every variable in the memory. i assume jasper will do some extra work to sync between channels if the shared memory is as a whole totally ordered.
- this is similar to http://en.cppreference.com/w/c/atomic/memory_order , but with the ordering specified on a per-data-space basis rather than on a per-operation basis
- i guess a 'shared memory' is just a dict of variables in that memory, which is just a variable. So these are really type qualifiers in variable declarations/annotations, although the different processes must attach the same consistency type qualifier to the same variable.