▲ | Phil_Latio 2 days ago | |||||||||||||||||||||||||
No i meant cooperative green threads, not the stackless async/await model. My model would basically mean: No "function coloring", all functions can be called as usual. IO related functions will automatically yield, no problem. All CPU-bound work either need manual yield points (not good, I agree) or should be offloaded to a coroutine on a different thread and then awaited (yes with await keyword) cooperatively. If you want to invoke a click handler for an UI, you can launch a coroutine on the same thread (cooperative). Go must do all sorts of trickery with the preemption. Like inserting yield points or even depend on signals so it can preempt a goroutine which didn't hit a yield point. It basically replicates what the OS does with threads. | ||||||||||||||||||||||||||
▲ | nromiun 2 days ago | parent | next [-] | |||||||||||||||||||||||||
So basically like gevent. I agree that is a very good concurrency model. Much better than the current asyncio mess we have. But if you already have a runtime I don't know why it would be big deal to make them N:M threads as well. Makes managing CPU bound tasks easy as well as IO bound tasks. | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
▲ | 2 days ago | parent | prev [-] | |||||||||||||||||||||||||
[deleted] |