#include "stdafx.h"
#include "ExThread.h"
#include "MyThread.h"
#include <process.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CWinApp theApp;
using namespace std;
UINT WorkerThreadFunction(void *pData)
{
printf("Worker Thread Function\n");
return 0;
}
DWORD WINAPI ThreadFunction(void *pData)
{
printf("Thread Function\n");
return 0;
}
unsigned int WINAPI ThreadFunction2(void *pData)
{
printf("Thread Function2\n");
return 0;
}
/*
사용자 인터페이스 쓰레드 (User Interface Thread) 생성
설명의 편의상, 본 예제에서 사용되고 있는 CMyThread는 CWinThread를 상속받은 클래스라고 가정합니다.
*/
void Example1()
{
CMyThread *p = NULL;
/* 정지된 상태로 쓰레드를 생성함. */
p = (CMyThread *) AfxBeginThread(RUNTIME_CLASS(CMyThread), 0, 0, CREATE_SUSPENDED);
/* 쓰레드를 다시 시작함. */
p->m_bAutoDelete=TRUE;
p->ResumeThread();
Sleep(3000);
/* 다음과 같이 사용자 인터페이스 쓰레드는 메시지를 주고 받을 수 있습니다. */
p->PostThreadMessage(WM_QUIT, 0, 0); /* UI 쓰레드 종료 메시지 전송 */
WaitForSingleObject(p->m_hThread, INFINITE);
}
/*
작업자 쓰레드 (Worker Thread) 생성
*/
void Example2()
{
CWinThread *p = AfxBeginThread(WorkerThreadFunction, NULL);
WaitForSingleObject(p->m_hThread, INFINITE);
}
void Example3()
{
HANDLE h = CreateThread(NULL, 0, ThreadFunction, NULL, 0, NULL);
WaitForSingleObject(h, INFINITE);
CloseHandle(h);
}
void Example4()
{
HANDLE h = (HANDLE)_beginthreadex(NULL, 0, ThreadFunction2, 0, 0, NULL);
WaitForSingleObject(h, INFINITE);
CloseHandle(h);
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
Example1();
Example2();
Example3();
Example4();
printf("done\n");
return 0;
}
#include "ExThread.h"
#include "MyThread.h"
#include <process.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CWinApp theApp;
using namespace std;
UINT WorkerThreadFunction(void *pData)
{
printf("Worker Thread Function\n");
return 0;
}
DWORD WINAPI ThreadFunction(void *pData)
{
printf("Thread Function\n");
return 0;
}
unsigned int WINAPI ThreadFunction2(void *pData)
{
printf("Thread Function2\n");
return 0;
}
/*
사용자 인터페이스 쓰레드 (User Interface Thread) 생성
설명의 편의상, 본 예제에서 사용되고 있는 CMyThread는 CWinThread를 상속받은 클래스라고 가정합니다.
*/
void Example1()
{
CMyThread *p = NULL;
/* 정지된 상태로 쓰레드를 생성함. */
p = (CMyThread *) AfxBeginThread(RUNTIME_CLASS(CMyThread), 0, 0, CREATE_SUSPENDED);
/* 쓰레드를 다시 시작함. */
p->m_bAutoDelete=TRUE;
p->ResumeThread();
Sleep(3000);
/* 다음과 같이 사용자 인터페이스 쓰레드는 메시지를 주고 받을 수 있습니다. */
p->PostThreadMessage(WM_QUIT, 0, 0); /* UI 쓰레드 종료 메시지 전송 */
WaitForSingleObject(p->m_hThread, INFINITE);
}
/*
작업자 쓰레드 (Worker Thread) 생성
*/
void Example2()
{
CWinThread *p = AfxBeginThread(WorkerThreadFunction, NULL);
WaitForSingleObject(p->m_hThread, INFINITE);
}
void Example3()
{
HANDLE h = CreateThread(NULL, 0, ThreadFunction, NULL, 0, NULL);
WaitForSingleObject(h, INFINITE);
CloseHandle(h);
}
void Example4()
{
HANDLE h = (HANDLE)_beginthreadex(NULL, 0, ThreadFunction2, 0, 0, NULL);
WaitForSingleObject(h, INFINITE);
CloseHandle(h);
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
Example1();
Example2();
Example3();
Example4();
printf("done\n");
return 0;
}
'Program Visual C++' 카테고리의 다른 글
RAW Data Draw (0) | 2011.08.11 |
---|---|
YUV to RGB ... (0) | 2011.08.10 |
AfxBeginThread 사용법? (0) | 2009.05.05 |
Microsoft Platform SDK (0) | 2009.02.25 |
RichEdit 관련 (0) | 2008.02.29 |