[작성중] C++ 에서 Fiber 를 이용한 Coroutine 사용하기

by Lyn posted Apr 03, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
<작성중>
소스는 첨부파일에. 
#include <cstdio>
#include <windows.h>
#include "Coroutine.h"
 
class NumberCount : public Coroutine<int>
{
protected:
	void Execute() override
	{
		for (int i = 0; i < 100; ++i)
		{			
			yield_return(i);
		}
	}
};
 
class NumberPrint : public Coroutine<void>
{
protected:
	void Execute() override
	{
		for (int i = 0; i < 100; ++i)
		{		
			printf("NumberPrint : %d\n", i);
			yield;
		}
	}
};
 
void wmain()
{	
	ConvertThreadToFiber((LPVOID)GetCurrentThreadId());
	
	NumberCount Co1;
	NumberPrint Co2;
 
	for (int i = 0; i < 100; ++i)
	{
		printf("NumberCount : %d\n", Co1.Resume());
		Co2.Resume();
		Sleep(1000);
	}	
}