The concurrency and threading in Go just feels like magic compared to every other language. I'm a goroutine addict and I refuse to be rehabilitated.
Just from observations over the years, I don't think there's any other language quite like this, in terms of how things can end up happening in any thread.
I'm curious; using hardware threads is M logical threads preemptively scheduled on N physical cores. In what way does this not satisfy the original criteria?
That is not true of preemptive green threading systems. Go/Erlang/Haskell all run native foreign code on its own threads, and manage all internal I/O with async schedulers that never block. They also preempt user code in tight loops.
Those are the only mature languages that have all of these features.
Not sure if purposefully but you left out java. It doesn't preempt a CPU hot loop, but arguably you don't really want to disturb the CPU there / the whole "green thread" model doesn't make much sense with that kind of workload. That's why you have ordinary threads as well.
SamInTheShell · · focus · HN ↗
Just from observations over the years, I don't think there's any other language quite like this, in terms of how things can end up happening in any thread.
osigurdson · · focus · HN ↗
Doesn't that describe pretty much any green thread style concurrency implementation.
dlisboa · · focus · HN ↗
Other languages and their implementations of green threads usually have cooperative scheduling or M:1 mapping
dwattttt · · focus · HN ↗
dlisboa · · focus · HN ↗
dwattttt · · focus · HN ↗
falserum · · focus · HN ↗
LtWorf · · focus · HN ↗
jeremyjh · · focus · HN ↗
Those are the only mature languages that have all of these features.
gf000 · · focus · HN ↗