CWorkerThread 클래스
이 클래스는 작업자 스레드를 만들거나 기존 스레드를 사용하며 하나 이상의 커널 개체 핸들을 대기하고 핸들 중 하나가 신호를 받으면 지정된 클라이언트 함수를 실행합니다.
Important
이 클래스와 해당 멤버는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다.
구문
template <class ThreadTraits = DefaultThreadTraits>
class CWorkerThread
매개 변수
ThreadTraits
CRTThreadTraits 또는 Win32ThreadTraits와 같은 스레드 만들기 함수를 제공하는 클래스입니다.
멤버
보호된 구조체
속성 | 설명 |
---|---|
WorkerClientEntry |
공용 생성자
속성 | 설명 |
---|---|
CWorkerThread::CWorkerThread | 작업자 스레드에 대한 생성자입니다. |
CWorkerThread::~CWorkerThread | 작업자 스레드에 대한 소멸자입니다. |
공용 메서드
이름 | 설명 |
---|---|
CWorkerThread::AddHandle | 이 메서드를 호출하여 작업자 스레드에서 유지 관리하는 목록에 대기 가능한 개체의 핸들을 추가합니다. |
CWorkerThread::AddTimer | 이 메서드를 호출하여 작업자 스레드에서 유지 관리하는 목록에 주기적 대기 가능 타이머를 추가합니다. |
CWorkerThread::GetThreadHandle | 이 메서드를 호출하여 작업자 스레드의 스레드 핸들을 가져옵니다. |
CWorkerThread::GetThreadId | 이 메서드를 호출하여 작업자 스레드의 스레드 ID를 가져옵니다. |
CWorkerThread::Initialize | 이 메서드를 호출하여 작업자 스레드를 초기화합니다. |
CWorkerThread::RemoveHandle | 대기 가능한 개체 목록에서 핸들을 제거하려면 이 메서드를 호출합니다. |
CWorkerThread::Shutdown | 이 메서드를 호출하여 작업자 스레드를 종료합니다. |
설명
CWorkerThread를 사용하려면
이 클래스의 인스턴스를 만듭니다.
CWorkerThread::Initialize를 호출 합니다.
커널 개체의 핸들과 IWorkerThreadClient 구현에 대한 포인터를 사용하여 CWorkerThread::AddHandle을 호출합니다.
- 또는 -
IWorkerThreadClient 구현에 대한 포인터를 사용하여 CWorkerThread::AddTimer를 호출합니다.
IWorkerThreadClient::Execute를 구현하여 핸들 또는 타이머에 신호를 보낼 때 몇 가지 작업을 수행합니다.
대기 가능한 개체 목록에서 개체를 제거하려면 CWorkerThread::RemoveHandle을 호출합니다.
스레드를 종료하려면 CWorkerThread::Shutdown을 호출 합니다.
요구 사항
헤더: atlutil.h
CWorkerThread::AddHandle
이 메서드를 호출하여 작업자 스레드에서 유지 관리하는 목록에 대기 가능한 개체의 핸들을 추가합니다.
HRESULT AddHandle(
HANDLE hObject,
IWorkerThreadClient* pClient,
DWORD_PTR dwParam) throw();
매개 변수
hObject
대기 가능한 개체에 대한 핸들입니다.
pClient
핸들이 신호를 받을 때 호출할 개체의 IWorkerThreadClient 인터페이스에 대한 포인터입니다.
dwParam
핸들이 신호를 받을 때 IWorkerThreadClient::Execute 에 전달할 매개 변수입니다.
Return Value
성공 시 S_OK를 반환하거나 실패 시 HRESULT 오류를 반환합니다.
설명
IWorkerThreadClient::Execute는 핸들 hObject가 신호를 받으면 pClient를 통해 호출됩니다.
CWorkerThread::AddTimer
이 메서드를 호출하여 작업자 스레드에서 유지 관리하는 목록에 주기적 대기 가능 타이머를 추가합니다.
HRESULT AddTimer(
DWORD dwInterval,
IWorkerThreadClient* pClient,
DWORD_PTR dwParam,
HANDLE* phTimer) throw();
매개 변수
dwInterval
타이머의 기간을 밀리초 단위로 지정합니다.
pClient
핸들이 신호를 받을 때 호출할 개체의 IWorkerThreadClient 인터페이스에 대한 포인터입니다.
dwParam
핸들이 신호를 받을 때 IWorkerThreadClient::Execute 에 전달할 매개 변수입니다.
phTimer
[out] 성공 시 새로 만든 타이머에 대한 핸들을 수신하는 HANDLE 변수의 주소입니다.
Return Value
성공 시 S_OK를 반환하거나 실패 시 HRESULT 오류를 반환합니다.
설명
IWorkerThreadClient::Execute는 타이머에 신호를 보낼 때 pClient를 통해 호출됩니다.
타이머 핸들을 phTimer에서 CWorkerThread::RemoveHandle로 전달하여 타이머를 닫습니다.
CWorkerThread::CWorkerThread
생성자입니다.
CWorkerThread() throw();
CWorkerThread::~CWorkerThread
소멸자입니다.
~CWorkerThread() throw();
설명
CWorkerThread::Shutdown을 호출 합니다.
CWorkerThread::GetThreadHandle
이 메서드를 호출하여 작업자 스레드의 스레드 핸들을 가져옵니다.
HANDLE GetThreadHandle() throw();
Return Value
작업자 스레드가 초기화되지 않은 경우 스레드 핸들 또는 NULL을 반환합니다.
CWorkerThread::GetThreadId
이 메서드를 호출하여 작업자 스레드의 스레드 ID를 가져옵니다.
DWORD GetThreadId() throw();
Return Value
작업자 스레드가 초기화되지 않은 경우 스레드 ID 또는 NULL을 반환합니다.
CWorkerThread::Initialize
이 메서드를 호출하여 작업자 스레드를 초기화합니다.
HRESULT Initialize() throw();
HRESULT Initialize(CWorkerThread<ThreadTraits>* pThread) throw();
매개 변수
pThread
기존 작업자 스레드입니다.
Return Value
성공 시 S_OK를 반환하거나 실패 시 HRESULT 오류를 반환합니다.
설명
생성 후 또는 CWorkerThread::Shutdown 호출 후에 개체를 초기화하려면 이 메서드를 호출해야 합니다.
둘 이상의 CWorkerThread
개체가 동일한 작업자 스레드를 사용하도록 하려면 인수를 전달하지 않고 해당 개체 중 하나를 초기화한 다음 해당 개체에 대한 포인터를 다른 개체의 메서드에 Initialize
전달합니다. 포인터를 사용하여 초기화된 개체는 초기화하는 데 사용되는 개체 전에 종료해야 합니다.
기존 개체에 대한 포인터를 사용하여 초기화할 때 해당 메서드의 동작이 어떻게 변경되는지에 대한 자세한 내용은 CWorkerThread::Shutdown을 참조하세요.
CWorkerThread::RemoveHandle
대기 가능한 개체 목록에서 핸들을 제거하려면 이 메서드를 호출합니다.
HRESULT RemoveHandle(HANDLE hObject) throw();
매개 변수
hObject
제거할 핸들입니다.
Return Value
성공 시 S_OK를 반환하거나 실패 시 HRESULT 오류를 반환합니다.
설명
핸들이 제거되면 AddHandle에 전달된 연결된 개체에서 IWorkerThreadClient::CloseHandle이 호출됩니다. 이 호출이 실패 CWorkerThread
하면 핸들에서 Windows CloseHandle 함수를 호출합니다.
CWorkerThread::Shutdown
이 메서드를 호출하여 작업자 스레드를 종료합니다.
HRESULT Shutdown(DWORD dwWait = ATL_WORKER_THREAD_WAIT) throw();
매개 변수
dwWait
작업자 스레드가 종료될 때까지 대기하는 시간(밀리초)입니다. ATL_WORKER_THREAD_WAIT 기본값은 10초입니다. 필요한 경우 atlutil.h를 포함하기 전에 이 기호에 대한 고유한 값을 정의할 수 있습니다.
Return Value
성공 시 S_OK 반환하거나 시간 제한 값 인 dwWait을 초과하는 경우와 같이 실패 시 오류 HRESULT를 반환합니다.
설명
개체를 다시 사용하려면 이 메서드를 호출한 후 CWorkerThread::Initialize를 호출합니다.
다른 CWorkerThread
개체에 대한 포인터를 사용하여 초기화된 개체에 대한 호출 Shutdown
은 효과가 없으며 항상 S_OK 반환합니다.
참고 항목
DefaultThreadTraits
클래스
다중 스레딩: 작업자 스레드 만들기
IWorkerThreadClient 인터페이스