> In all languages (Go, Nim, ...) channels are built either on top of > Lock+Condition variables or Atomics (reusing queue designs) but I expect we > will reach the limits of memory coherency at the CPU level and that in the > future NUMA will become increasingly important and we might see hardware > channels being more popular (rather than restricted to stuff like Infiniband)
Well this has been claimed for over ten years now, it's one reason why Nim did bet on thread local heaps + message passing and I don't see it becoming the reality anytime soon. I can be wrong of course. However, it is insightful to look at what GPUs do. The classical view is that they are based on shared memory. But when you look at it from a different angle what happens is that inside a GPU a program fragment is passed over to the data. Maybe I'm nuts and is has nothing to do with GPUs, but the idea is a good one. Don't transport data, transport programs.
