본문 바로가기

Note..

Thread 기본구조

전에 지식인에서 봤던 코드인데 기억에 남아서 끄적임

#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