#include<iostream>
#include<Windows.h>
using namespace std;
// 멀티 쓰레드 프로그램을 C++ 클래스로 래핑해 보자 - 안드로이드 원리
/*
DWORD __stdcall foo( void *p){
return 0;
}
int main(){
CreateThread(0,0,foo,"A",0,0);
}
*/
class Thread{
public:
void start(){
CreateThread(0,0, _threadLoop,this,0,0);
}
//아래 함수가 static 일수밖에 없는 이유를 알아야 한다
// C 의 콜백함수의 개념을 클래스화 할 때는 결국 static 함수로 해야한다.
static DWORD __stdcall _threadLoop(void *p){
Thread * pThis = static_cast<Thread *>(p);
pThis -> threadLoop(); //this -> theadLoog()로 변경 될 수 있어야 한다.
return 0;
}
virtual void threadLoop(){}
};
//----------------------------------------------------
// 이제 위 라이브러리 사용자는 Thread 의 자식을 만들어서 threadLoop() 가상함수를 재정의한다.
class MyThread : public Thread{
public :
virtual void threadLoop(){
for(int i=0;i<10;i++){
cout << i << endl;
Sleep(1000);
}
}
};
int main(){
MyThread t;
t.start();
int n;
cin >> n;
}
'C,C++ > Android_FrameWork' 카테고리의 다른 글
[SSM 안드로이드 프레임워크 개발 강의]12-1 얕은 복사의 4가지 기법 (0) | 2012.08.14 |
---|---|
[SSM 안드로이드 프레임워크 개발 강의]12. 복사생성자 (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발 강의]10. 멤버함수 호출의 정리 (0) | 2012.08.13 |
[SSM 안드로이드 프레임워크 개발 강의]9.템플릿으로 알아보는 싱글톤 패턴 (0) | 2012.08.13 |
[SSM 안드로이드 프레임워크 개발 강의]8. 상수함수 이야기 (0) | 2012.08.13 |