전에 지식인에서 봤던 코드인데 기억에 남아서 끄적임
#include<iostream>
#include<Windows.h>
using namespace std;
BOOL finish = FALSE;
DWORD WINAPI WorkerThread(LPVOID);
int main(){
DWORD dwID;
HANDLE hThread = CreateThread(NULL,0,WorkerThread,NULL,0,&dwID);
Sleep(1000);
//작업 스레드가 종료되도록 유도
finish = TRUE;
//스레드 종료를 기다림
WaitForSingleObject(hThread,INFINITE);
CloseHandle(hThread);
return 0;
}
DWORD WINAPI WorkerThread(LPVOID){
cout<<"WorkerThread started"<<endl;
int i=0;
while(!finish){
++i;
}
cout<<"Worker Thread finished "<<i<<endl;
return 0;
}
main함수와 WorkerThread함수가 다른 스레드에서 동작하기때문에
main함수의 Sleep(1000) 이후 finish=TRUE 가 되는동안 WorkerThread함수는 계속 ++i를 한다.
때문에,
WorkerThread Started
Worker Thread finished 3264325
계속하려면 아무키나 누르시오.
처럼 뜨게된다.
(스레드 없이 절차적으로 생각한다면 있을 수 없는일)
'Note..' 카테고리의 다른 글
내 코드 출력해주기 (0) | 2011.08.01 |
---|---|
c# 맵에디터 (0) | 2011.05.18 |
12기 대상 C++강의 숙제(1) (0) | 2011.03.28 |
POST와 GET (0) | 2011.01.27 |
조건부 컴파일 (0) | 2011.01.27 |