I sometimes wonder where we would be now if people would have gone "Wow, mr Reppy! concurrentML is so cool!" in 1993.
instead we got pthreads and collective amnesia and later we got go's girly times and channels which are only half way there.
I sometimes wonder where we would be now if people would have gone "Wow, mr Reppy! concurrentML is so cool!" in 1993.
instead we got pthreads and collective amnesia and later we got go's girly times and channels which are only half way there.
What is useful is the state machine aspects of things like coroutines or async/await, but those aren't quite fibers and very much aren't M:N threading. A major use of them is in UI where they have strict thread requirements even.
State machine/management is really what is most useful
i rarely write gui stuff and I find async is rarely what I need. in f# I at least have the option to use hopac.
you need real threads for parallelism though? And real threads scale just fine such that m:n threading isn't typically needed.
with CAS, making a multicore cml is not too hard.
It also became a cycle: People write single threaded code -> CPUs/OSs optimize performance/ergonomics for single threaded programs -> People write single threaded code ->...
It wasn't until scaling slowed down that interest/investment in concurrency/parallelism took off.