3 ms·
I found them useful when using the Boost Asio C++ networking library. I needed to read some bytes, make a decision, read some more bytes, make another decision
by missblit 9y ago
I found them useful when using the Boost Asio C++ networking library.
I needed to read some bytes, make a decision, read some more bytes, make another decision, etc. This started out as callback hell since every read was asynchronous, which was very painful, but after using the coroutine support I was able to write the code as if it was synchronous and the logic became a lot easier to follow.
And the coroutines weren't that hard to use, even lacking proper language support. I could basically write something like async_read(socket, buffer, yield_context);. The coroutine yielded behind the scenes and the buffer was populated once control flow was returned to the next line (from who knows where!)