Coro: Coroutine library written for IoVM

リファレンスをでっち上げてみる試み。

Coro* Coro_new(void);

Coro構造体をメモリ上に確保し、初期化します。

void Coro_free(Coro* self);

Coro_newでメモリ上に確保されたCoro構造体を破棄します。

void* Coro_stack(Coro* self);

Coroスタックへのアクセサメソッド

size_t Coro_stackSize(Coro* self);

Coroスタックの大きさを返す

int Coro_stackSpaceAlmostGone(Coro* self);

スタックを食いつぶしつつあるようならtrueを返す。

これは使う意味あるのか?スタック領域拡張メソッドはない模様。

void Coro_initializeMainCoro(Coro* self);

今走っているコンテキストをCoro化して、MainCoroを初期化する。

実装:win32環境でCoroの実装にFiberを使う場合に、今走っているスレッドをFiber化する。

void Coro_startCoro_(Coro* self, Coro* other, void* context, CoroStartCallback* callback);

現在実行中のCoro 'self'から新しいCoro 'other'に処理を移し、(*callback)(context)を実行。

void Coro_switchTo_(Coro* self, Coro* next);

所謂yield。

現在実行中のCoro 'self'からCoro 'next'に処理を移す。