Hacker News new | past | comments | ask | show | jobs | submit login

I mean goroutines are not exactly coroutines nor are they threads they are somewhere in between.

And its pretty easy to use the same workflow as goroutines in C++ using std::thread and a concurrent queue implementation, tbb has a decent one and moodycamels is also very good.

It's actual async/await that is a touch annoying but it's also fundamental building blocks, there are currently few abstractions ontop of it.

I also believe strongly async/await is an antipattern. There are better models to handle concurrency well imho that don't use function colouring. Golangs goroutines and channels (effectively actors but that's a can of worms) are a great solution and probably what you should be reaching for instead of async/await.




Coroutines can be divided into two categories, stackless and stackful. goroutines are stackful coroutines.


Except goroutines will absolutely spawn a thread which a coroutine by definition wont.

Goroutines are parallel, coroutine are concurrent. Those are not the same thing.

Coroutines co-operatively yeild to other coroutines. Parallel constructs run in parallel at the same time. Goroutines can run in parallel at the same time and thus are not a coroutine.


My understanding is that goroutines don't spawn threads per-se. They can be executed on parallel event loops, but that can be true for stackess coroutines in c++ for example.


Yeah goroutines are a pretty high level abstraction but they are definitely closer in concept to green threads than to coroutines.

You can run a C++ coroutine on a seperate thread but you effectively need to build all the task handling logic yourself of use a library that's build that out. Goroutines you don't need to use a specialised sleep fuction which is actually changing coroutine state, setting a timer and yeilding. You just sleep as an example




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: