Boost logo

Boost :

Subject: [boost] Library for await and stackless coroutine emulation
From: TONGARI J (tongari95_at_[hidden])
Date: 2015-03-05 10:32:17


Hi there,

I just want to announce my recent work on a small library called `CO2`,
which intend to emulate await/yield and stackless coroutine.

    https://github.com/jamboree/co2

This library depends on Boost.Preprocessor, while I'm not proposing this
library to Boost at this moment, if there's much interest in this library,
I'd think about it.

The idea is based on N4286:

    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4286.pdf

The library is still work in progress, but the core features are complete,
so if you're interested in the resumable function proposal and don't have a
tool to experiment with, this library may serve the purpose.

You can find a more detailed description on the github page, if you want to
know some number about performance, from a rough test borrowed from
Boost.Coroutine (symmetric/performance_switch.cpp), the avg cpu cycles for
context-switch are:

Boost.Coroutine: 40 cycles
CO2: 16 cycles
built-in await: 9 cycles

(compiled with MSVC14, x64)

Feedbacks will be appreciated.
Thanks


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk