본문 바로가기

Windows/MFC

CCreateThreadEx

[code]
//
// DATE        : May 10, 2007
// CODER    : aucd29 (aucd29@gmail.com)
// VERSION    : 1.0
//
//
// ------------------------------------------------------
// NOTE
// ------------------------------------------------------
// * Thread를 손 쉽게 이용을 해 보도록 하자.
//

#include "StdAfx.h"
#include "CreateThreadEx.h"

CCreateThreadEx::CCreateThreadEx(void)
{

}

CCreateThreadEx::~CCreateThreadEx(void)
{

}

void CCreateThreadEx::Init(LPTHREAD_START_ROUTINE lpFunc, LPVOID lpArg)
{
    m_hThread = ::CreateThread(NULL, 0, lpFunc, lpArg, 0, &m_dwThreadID);

    if (m_hThread == NULL)
    {
        AfxMessageBox(L"can not create thread");
    }
}

BOOL CCreateThreadEx::IsAlive(void)
{
    ASSERT(m_hThread);
    DWORD dwThreadExitCode;
    GetExitCodeThread(m_hThread, &dwThreadExitCode);

    // STILL_ACTIVE == live
    return dwThreadExitCode==STILL_ACTIVE ? TRUE : FALSE;
}

void CCreateThreadEx::Supend(void)
{
    ASSERT(m_hThread);
    SuspendThread(m_hThread);
}

void CCreateThreadEx::Resume(void)
{
    ASSERT(m_hThread);
    ResumeThread(m_hThread);
}

void CCreateThreadEx::Kill(void)
{
    ASSERT(m_hThread);
    TerminateThread(m_hThread, 0);
}

BOOL CCreateThreadEx::SetPriority(int nPriority)
{
    /*
    THREAD_PRIORITY_BELOW_NORMAL
    THREAD_PRIORITY_NORMAL
    THREAD_PRIORITY_HIGHEST
    THREAD_PRIORITY_ABOVE_NORMAL
    THREAD_PRIORITY_ERROR_RETURN

    THREAD_PRIORITY_TIME_CRITICAL
    THREAD_PRIORITY_IDLE
    */
    ASSERT(m_hThread);
    return ::SetThreadPriority(m_hThread, nPriority);;
}
[/code]
[code]
#pragma once

class CCreateThreadEx
{
protected:
    DWORD m_dwThreadID;
    HANDLE m_hThread;

public:
    CCreateThreadEx(void);
    ~CCreateThreadEx(void);
    void Init(LPTHREAD_START_ROUTINE lpFunc, LPVOID lpArg);
    BOOL IsAlive(void);
    void Supend(void);
    void Resume(void);
    void Kill(void);
    BOOL SetPriority(int nPriority = THREAD_PRIORITY_IDLE);
};
[/code]

'Windows > MFC' 카테고리의 다른 글

MDB Init  (0) 2013.10.02
_bstr_t 를 CString으로  (0) 2013.10.02
Multithreading with C++ and MFC  (0) 2013.10.02
CNiceSliderCtrl  (0) 2013.10.02
다중 쓰레드와 C++  (0) 2013.10.02