Boost.Coroutine 移植中
とりあえず boost::coroutines::coroutine は一通り移植できて、こんな感じに使えるようになってきました。
int fib(coroutine<int ()>::self& self) { // 初項 int n = 0; self.yield(n); // 2項 int m = 1; self.yield(m); // 3項以降 while (true) { int v = m + n; self.yield(v); n = m; m = v; } }
coroutine<int ()> c(fib); for (int i = 0; i < 10; i++) { DBGPRINTF("fib: %d", c()); }
fib: 0 fib: 1 fib: 1 fib: 2 fib: 3 fib: 5 fib: 8 fib: 13 fib: 21 fib: 34
あとは shared_coroutine とか generator とか、コルーチン用スタックのアロケートに自前のアロケータを使用できるようにしてみたりとかすれば実用できそうな感じ。
ある程度実装できたら公開します。
→公開しました