C++でコルーチンを作ってみるテストです。
さて、下のソースを見てください。
このFooという関数はまさにコルーチンです。
#include "coroutine.h"
class Test:public Coroutine{
int i;
public:
bool Foo(){
CoroutineBegin();
for (i = 1; i <= 20; i++){
printf("%d ", i);
yield;
if ((i % 3) == 0){
printf("fizz ");
yield;
}
if ((i % 5) == 0){
printf("buzz ");
yield;
}
}
CoroutineEnd();
return true;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Test test;
for (;;){
bool finish = test.Foo();
if (finish) break;
printf("---\n");
}
return 0;
}
実行結果はこんな感じになります。
1 ---
2 ---
3 ---
fizz ---
4 ---
5 ---
buzz ---
6 ---
fizz ---
7 ---
8 ---
9 ---
(以下省略)
コルーチンのyieldが呼ばれる度にメインルーチンに戻ってハイフンと改行が出力されています。
いいですね、コルーチン!
こんな素敵なコルーチンが使えるヘッダファイルが今ならもう一個ついて1980円!
じゃなくて、こちらからダウンロードできます。
#あくまで使用は自己責任で