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'に処理を移す。