Garbage Collection

塵も積もれば山

目次

Blog 利用状況

ニュース

C++とかC#とか数学ネタを投下していく予定です。

[その他のページ]
日々の四方山話を綴った日記出水の日記帳

書庫

日記カテゴリ

[C++]コルーチンへの挑戦

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円!
じゃなくて、こちらからダウンロードできます。

#あくまで使用は自己責任で

投稿日時 : 2010年4月28日 22:59

Feedback

# [C++]ブロックに定評のない読み込み 2010/05/02 0:05 Garbage Collection

[C++]ブロックに定評のない読み込み

タイトル
名前
Url
コメント