I’m currently trying (with limited success) to add this to the Julia syllabus: tasks, threads, channels, locks, atomic operations, and all that useful-but-complicated stuff.
I’m not finding much about this on other tracks. JS has concepts for promises and callbacks, but languages with a more Julia-like approach (Go, C#, C++) don’t yet include this in their syllabus.
Does anyone know of any previous discussions about this? I’m particularly interested in ideas for concept exercises. I assume nothing got merged, but maybe some preliminary suggestions were bounced around by the maintainers?
Thank you for all the suggestions, they are very helpful.
I’m already starting to work on the practice exercises: bank-account for locks and/or atomics, parallel-letter-frequency for scatter-gather algorithms across multiple threads.
The X86-64 concept exercise looks like the sort of thing we could adapt. Higher-level, of course (Julia does not encourage end-user code to concern itself with addresses), but maybe we could do a compare and contrast with both atomics and locks: different approaches to essentially the same end result.
I’m still hoping to find something in the Go world practicing goroutines and channels. Julia has a pretty close copy of this. Though it’s kind of a pity it’s Go (not a language I use or much know about).