다음을 통해 공유


CWinThread 수업

애플리케이션 내의 실행 스레드를 나타냅니다.

구문

class CWinThread : public CCmdTarget

멤버

공용 생성자

속성 설명
CWinThread::CWinThread CWinThread 개체를 생성합니다.

공용 메서드

이름 설명
CWinThread::CreateThread 개체 실행을 CWinThread 시작합니다.
CWinThread::ExitInstance 스레드가 종료되면 정리하도록 재정의합니다.
CWinThread::GetMainWnd 스레드의 주 창에 대한 포인터를 검색합니다.
CWinThread::GetThreadPriority 현재 스레드의 우선 순위를 가져옵니다.
CWinThread::InitInstance 스레드 인스턴스 초기화를 수행하도록 재정의합니다.
CWinThread::IsIdleMessage 특수 메시지를 확인합니다.
CWinThread::OnIdle 스레드별 유휴 시간 처리를 수행하도록 재정의합니다.
CWinThread::PostThreadMessage 다른 CWinThread 개체에 메시지를 게시합니다.
CWinThread::PreTranslateMessage 메시지를 Windows 함수로 디스패치하기 전에 필터링하고 TranslateMessage DispatchMessage.
CWinThread::ProcessMessageFilter 애플리케이션에 도달하기 전에 특정 메시지를 가로채는 경우
CWinThread::ProcessWndProcException 스레드의 메시지 및 명령 처리기에서 throw된 처리되지 않은 모든 예외를 가로채는 경우
CWinThread::PumpMessage 스레드의 메시지 루프를 포함합니다.
CWinThread::ResumeThread 스레드의 일시 중단 횟수를 줄입니다.
CWinThread::Run 메시지 펌프를 사용하여 스레드에 대한 함수 제어 기본 메시지 루프를 사용자 지정하려면 재정의합니다.
CWinThread::SetThreadPriority 현재 스레드의 우선 순위를 설정합니다.
CWinThread::SuspendThread 스레드의 일시 중단 횟수를 증분합니다.

Public 연산자

속성 설명
CWinThread::operator HANDLE 개체의 핸들을 검색 CWinThread 합니다.

공용 데이터 멤버

속성 설명
CWinThread::m_bAutoDelete 스레드 종료 시 개체를 삭제할지 여부를 지정합니다.
CWinThread::m_hThread 현재 스레드에 대한 핸들입니다.
CWinThread::m_nThreadID 현재 스레드의 ID입니다.
CWinThread::m_pActiveWnd OLE 서버가 현재 위치 활성 상태인 경우 컨테이너 애플리케이션의 주 창에 대한 포인터입니다.
CWinThread::m_pMainWnd 애플리케이션의 주 창에 대한 포인터를 보유합니다.

설명

실행의 주 스레드는 일반적으로 파생 된 CWinAppCWinApp 개체에 의해 제공 ; 에서 CWinThread파생 됩니다. 추가 CWinThread 개체는 지정된 애플리케이션 내에서 여러 스레드를 허용합니다.

지원되는 두 가지 일반적인 유형의 스레드 CWinThread 는 작업자 스레드와 사용자 인터페이스 스레드입니다. 작업자 스레드에는 메시지 펌프가 없습니다. 예를 들어 스프레드시트 애플리케이션에서 백그라운드 계산을 수행하는 스레드입니다. 사용자 인터페이스 스레드에는 시스템에서 받은 메시지 펌프 및 프로세스 메시지가 있습니다. CWinApp 및 파생된 클래스는 사용자 인터페이스 스레드의 예입니다. 다른 사용자 인터페이스 스레드는 .에서 CWinThread직접 파생될 수도 있습니다.

클래스의 CWinThread 개체는 일반적으로 스레드 기간 동안 존재합니다. 이 동작을 수정하려면 .로 설정합니다 m_bAutoDelete FALSE.

클래스는 CWinThread 코드와 MFC를 스레드로부터 완전히 안전하게 만드는 데 필요합니다. 스레드 관련 정보를 유지하기 위해 프레임워크에서 사용하는 스레드 로컬 데이터는 개체에 의해 CWinThread 관리됩니다. 스레드 로컬 데이터 처리에 대한 CWinThread 이러한 의존성 때문에 MFC를 사용하는 모든 스레드는 MFC에서 만들어야 합니다. 예를 들어 런타임 함수 _beginthread에서 만든 스레드는 _beginthreadex MFC API를 사용할 수 없습니다.

스레드를 만들려면 .를 호출합니다 AfxBeginThread. 작업자 또는 사용자 인터페이스 스레드를 원하는지에 따라 두 가지 양식이 있습니다. 사용자 인터페이스 스레드를 원하는 경우 파생 클래스의 CRuntimeClass 포인터로 전달 AfxBeginThread 합니다CWinThread. 작업자 스레드를 만들려면 제어 함수에 AfxBeginThread 대한 포인터와 제어 함수에 매개 변수를 전달합니다. 작업자 스레드와 사용자 인터페이스 스레드의 경우 우선 순위, 스택 크기, 생성 플래그 및 보안 특성을 수정하는 선택적 매개 변수를 지정할 수 있습니다. AfxBeginThread 는 새 CWinThread 개체에 대한 포인터를 반환합니다.

호출 AfxBeginThread하는 대신 파생 개체를 생성한 CWinThread다음 CreateThread호출할 수 있습니다. 이 2단계 생성 방법은 스레드 실행의 연속 생성과 종료 사이에 개체를 다시 사용 CWinThread 하려는 경우에 유용합니다.

자세한 CWinThread내용은 C++ 및 MFC를 사용한 다중 스레딩, 다중 스레딩: 사용자 인터페이스 스레드 만들기, 다중 스레딩: 작업자 스레드 만들기 및 다중 스레딩: 동기화 클래스 사용 방법 문서를 참조하세요.

상속 계층 구조

CObject

CCmdTarget

CWinThread

요구 사항

머리글: afxwin.h

CWinThread::CreateThread

호출 프로세스의 주소 공간 내에서 실행할 스레드를 만듭니다.

BOOL CreateThread(
    DWORD dwCreateFlags = 0,
    UINT nStackSize = 0,
    LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);

매개 변수

dwCreateFlags
스레드 생성을 제어하는 추가 플래그를 지정합니다. 이 플래그는 다음 두 값 중 하나를 포함할 수 있습니다.

  • CREATE_SUSPENDED 일시 중단 횟수 1로 스레드를 시작합니다. 스레드가 실행되기 전에 개체의 CWinThread 멤버 데이터(예: m_bAutoDelete 파생 클래스의 멤버)를 초기화하려는 경우에 사용합니다CREATE_SUSPENDED. 초기화가 완료되면 이 스레드를 CWinThread::ResumeThread 사용하여 실행 중인 스레드를 시작합니다. 스레드는 호출될 때까지 CWinThread::ResumeThread 실행되지 않습니다.

  • 0 만든 직후 스레드를 시작합니다.

nStackSize
새 스레드에 대한 스택의 크기(바이트)를 지정합니다. 0이면 스택 크기는 기본적으로 프로세스의 기본 스레드와 동일한 크기로 설정됩니다.

lpSecurityAttrs
스레드의 SECURITY_ATTRIBUTES 보안 특성을 지정하는 구조를 가리킵니다.

Return Value

스레드가 성공적으로 만들어지면 0이 아닌 경우 그렇지 않으면 0입니다.

설명

스레드 개체를 만들고 한 단계에서 실행하는 데 사용합니다 AfxBeginThread . 스레드 실행의 연속 생성과 종료 사이에 스레드 개체를 다시 사용하려는 경우 사용합니다 CreateThread .

CWinThread::CWinThread

CWinThread 개체를 생성합니다.

CWinThread();

설명

스레드의 실행을 시작하려면 멤버 함수를 호출합니다 CreateThread . 일반적으로 이 생성자를 호출하고 CreateThread호출하는 스레드를 호출AfxBeginThread하여 만듭니다.

CWinThread::ExitInstance

드물게 재정의된 Run 멤버 함수 내에서 프레임워크에서 호출되어 스레드의 이 인스턴스를 종료하거나 호출이 실패할 InitInstance 경우 호출됩니다.

virtual int ExitInstance();

Return Value

스레드의 종료 코드입니다. 0은 오류가 없음을 나타내고 0보다 큰 값은 오류를 나타냅니다. 이 값은 호출 GetExitCodeThread하여 검색할 수 있습니다.

설명

멤버 함수를 제외한 어디에서나 이 멤버 함수를 Run 호출하지 마세요. 이 멤버 함수는 사용자 인터페이스 스레드에서만 사용됩니다.

이 함수의 기본 구현은 개체(있는 경우 m_bAutoDelete TRUE)를 CWinThread 삭제합니다. 스레드가 종료되면 추가 정리를 수행하려는 경우 이 함수를 재정의합니다. 구현은 ExitInstance 코드가 실행된 후 기본 클래스의 버전을 호출해야 합니다.

CWinThread::GetMainWnd

애플리케이션이 OLE 서버인 경우 애플리케이션 개체의 멤버를 직접 참조하는 대신 이 함수를 호출하여 애플리케이션의 활성 주 창에 대한 포인터를 m_pMainWnd 검색합니다.

virtual CWnd* GetMainWnd();

Return Value

이 함수는 두 가지 유형의 창 중 하나에 대한 포인터를 반환합니다. 스레드가 OLE 서버의 일부이고 현재 컨테이너 내에서 활성 상태인 개체가 있는 경우 이 함수는 개체의 데이터 멤버를 CWinThread 반환 CWinApp::m_pActiveWnd 합니다.

컨테이너 내에서 활성 상태인 개체가 없거나 애플리케이션이 OLE 서버가 아닌 경우 이 함수는 스레드 개체의 데이터 멤버를 반환 m_pMainWnd 합니다.

설명

사용자 인터페이스 스레드의 경우 애플리케이션 개체의 멤버를 직접 참조하는 m_pActiveWnd 것과 같습니다.

애플리케이션이 OLE 서버가 아닌 경우 이 함수의 호출은 애플리케이션 개체의 m_pMainWnd 멤버를 직접 참조하는 것과 동일합니다.

기본 동작을 수정하려면 이 함수를 재정의합니다.

CWinThread::GetThreadPriority

이 스레드의 현재 스레드 우선 순위 수준을 가져옵니다.

int GetThreadPriority();

Return Value

우선 순위 클래스 내의 현재 스레드 우선 순위 수준입니다. 반환되는 값은 가장 높은 우선 순위에서 가장 낮은 값으로 나열된 다음 중 하나입니다.

  • THREAD_PRIORITY_TIME_CRITICAL

  • THREAD_PRIORITY_HIGHEST

  • THREAD_PRIORITY_ABOVE_NORMAL

  • THREAD_PRIORITY_NORMAL

  • THREAD_PRIORITY_BELOW_NORMAL

  • THREAD_PRIORITY_LOWEST

  • THREAD_PRIORITY_IDLE

이러한 우선 순위에 대한 자세한 내용은 Windows SDK를 참조 SetThreadPriority 하세요.

CWinThread::InitInstance

InitInstance 사용자 인터페이스 스레드의 각 새 인스턴스를 초기화하려면 재정의해야 합니다.

virtual BOOL InitInstance();

Return Value

초기화에 성공하면 0이 아닌 값입니다. 그렇지 않으면 0입니다.

설명

일반적으로 스레드를 처음 만들 때 완료해야 하는 작업을 수행하도록 재정 InitInstance 의합니다.

이 멤버 함수는 사용자 인터페이스 스레드에서만 사용됩니다. 에 전달된 제어 함수에서 작업자 스레드의 초기화를 수행합니다 AfxBeginThread.

CWinThread::IsIdleMessage

특정 메시지가 생성된 후 호출되지 않도록 OnIdle 이 함수를 재정의합니다.

virtual BOOL IsIdleMessage(MSG* pMsg);

매개 변수

pMsg
처리 중인 현재 메시지를 가리킵니다.

Return Value

메시지를 처리한 후 호출해야 하는 경우 0이 아니고 OnIdle , 그렇지 않으면 0입니다.

설명

기본 구현은 캐럿을 깜박임으로써 생성된 중복 마우스 메시지 및 메시지 후에 호출 OnIdle 되지 않습니다.

애플리케이션에서 짧은 타이머 OnIdle 를 만든 경우 자주 호출되어 성능 문제가 발생합니다. 이러한 애플리케이션의 성능을 향상시키려면 다음과 같이 메시지를 확인 WM_TIMER 하도록 애플리케이션의 파생 클래스를 재정 IsIdleMessageCWinApp합니다.

BOOL CMyWinApp::IsIdleMessage(MSG* pMsg)
{
   if (!CWinApp::IsIdleMessage(pMsg) || pMsg->message == WM_TIMER)
      return FALSE;
   else
      return TRUE;
}

WM_TIMER 이러한 방식으로 처리하면 짧은 타이머를 사용하는 애플리케이션의 성능이 향상됩니다.

CWinThread::m_bAutoDelete

스레드 종료 시 CWinThread 개체를 자동으로 삭제할지 여부를 지정합니다.

BOOL m_bAutoDelete;

설명

m_bAutoDelete 데이터 멤버는 BOOL 형식의 공용 변수입니다.

m_bAutoDelete 은 기본 스레드 핸들이 닫히는 방식에는 영향을 주지 않지만 핸들을 닫는 타이밍에 영향을 미칩니다. 스레드 핸들은 항상 CWinThread 개체가 제거될 때 닫힙니다.

CWinThread::m_hThread

CWinThread에 연결된 스레드에 대한 핸들입니다.

HANDLE m_hThread;

설명

데이터 멤버는 m_hThread 형식 HANDLE의 공용 변수입니다. 기본 커널 스레드 개체가 현재 있고 핸들이 아직 닫혀 있지 않은 경우에만 유효합니다.

CWinThread 소멸자가 .를 호출 CloseHandle 합니다m_hThread. m_bAutoDelete 스레드가 종료되면 TRUE 개체가 CWinThread 소멸되어 개체 및 해당 멤버 변수에 CWinThread 대한 포인터가 무효화됩니다. 스레드 종료 값을 확인하거나 신호를 기다리는 멤버가 필요할 m_hThread 수 있습니다. 스레드 실행 CWinThread 중 및 종료 후 개체와 해당 멤버를 m_hThread 유지하려면 스레드 실행을 계속하기 FALSE 전에 설정 m_bAutoDelete 하세요. 그렇지 않으면 스레드를 종료하고 개체를 삭제한 다음 CWinThread 핸들을 닫은 후 사용하려고 할 수 있습니다. 이 기술을 사용하는 경우 개체를 삭제해야 합니다 CWinThread .

CWinThread::m_nThreadID

CWinThread에 연결된 스레드의 ID입니다.

DWORD m_nThreadID;

설명

데이터 멤버는 m_nThreadID 형식 DWORD의 공용 변수입니다. 기본 커널 스레드 개체가 현재 존재하는 경우에만 유효합니다. 또한 수명에 대한 m_hThread 발언을 참조하세요.

예시

AfxGetThread에 대한 예를 참조하세요.

CWinThread::m_pActiveWnd

이 데이터 멤버를 사용하여 스레드의 활성 창 개체에 대한 포인터를 저장합니다.

CWnd* m_pActiveWnd;

설명

Microsoft Foundation 클래스 라이브러리는 참조하는 창이 닫히면 스레드를 m_pActiveWnd 자동으로 종료합니다. 이 스레드가 애플리케이션의 기본 스레드인 경우 애플리케이션도 종료됩니다. 이 데이터 멤버인 NULL경우 애플리케이션 개체의 CWinApp 활성 창이 상속됩니다. m_pActiveWnd 는 형식 CWnd*의 public 변수입니다.

일반적으로 재정의할 때 InitInstance이 멤버 변수를 설정합니다. 작업자 스레드에서 이 데이터 멤버의 값은 부모 스레드에서 상속됩니다.

CWinThread::m_pMainWnd

이 데이터 멤버를 사용하여 스레드의 주 창 개체에 대한 포인터를 저장합니다.

CWnd* m_pMainWnd;

설명

Microsoft Foundation 클래스 라이브러리는 참조하는 창이 닫히면 스레드를 m_pMainWnd 자동으로 종료합니다. 이 스레드가 애플리케이션의 기본 스레드인 경우 애플리케이션도 종료됩니다. 이 데이터 멤버인 NULL경우 애플리케이션 개체의 CWinApp 주 창을 사용하여 스레드를 종료할 시기를 결정합니다. m_pMainWnd 는 형식 CWnd*의 public 변수입니다.

일반적으로 재정의할 때 InitInstance이 멤버 변수를 설정합니다. 작업자 스레드에서 이 데이터 멤버의 값은 부모 스레드에서 상속됩니다.

CWinThread::OnIdle

유휴 시간 처리를 수행하려면 이 멤버 함수를 재정의합니다.

virtual BOOL OnIdle(LONG lCount);

매개 변수

lCount
스레드의 메시지 큐가 비어 있을 때 매번 OnIdle 증분된 카운터가 호출됩니다. 이 수는 새 메시지가 처리될 때마다 0으로 다시 설정됩니다. 매개 변수를 lCount 사용하여 메시지를 처리하지 않고 스레드가 유휴 상태인 상대적인 시간을 확인할 수 있습니다.

Return Value

0이 아닌 경우 더 많은 유휴 처리 시간을 받습니다. 유휴 처리 시간이 더 이상 필요하지 않은 경우 0입니다.

설명

OnIdle 는 스레드의 메시지 큐가 비어 있을 때 기본 메시지 루프에서 호출됩니다. 재정의를 사용하여 고유한 백그라운드 유휴 처리기 작업을 호출합니다.

OnIdle 는 추가 유휴 처리 시간이 필요하지 않음을 나타내려면 0을 반환해야 합니다. lCount 매개 변수는 메시지 큐가 비어 있을 때 호출될 때마다 OnIdle 증가하며 새 메시지가 처리될 때마다 0으로 다시 설정됩니다. 이 수에 따라 다른 유휴 루틴을 호출할 수 있습니다.

이 멤버 함수의 기본 구현은 메모리에서 임시 개체 및 사용되지 않는 동적 링크 라이브러리를 해제합니다.

이 멤버 함수는 사용자 인터페이스 스레드에서만 사용됩니다.

애플리케이션은 반환될 때까지 OnIdle 메시지를 처리할 수 없으므로 이 함수에서 긴 작업을 수행하지 않습니다.

CWinThread::operator HANDLE

개체의 핸들을 검색 CWinThread 합니다.

operator HANDLE() const;

Return Value

성공하면 스레드 개체의 핸들입니다. 그렇지 않으면 . NULL

설명

핸들을 사용하여 Windows API를 직접 호출합니다.

CWinThread::PostThreadMessage

사용자 정의 메시지를 다른 CWinThread 개체에 게시하기 위해 호출됩니다.

BOOL PostThreadMessage(
    UINT message,
    WPARAM wParam,
    LPARAM lParam);

매개 변수

message
사용자 정의 메시지의 ID입니다.

wParam
첫 번째 메시지 매개 변수입니다.

lParam
두 번째 메시지 매개 변수입니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

게시된 메시지는 메시지 맵 매크로 ON_THREAD_MESSAGE에 의해 적절한 메시지 처리기에 매핑됩니다.

참고 항목

호출 PostThreadMessage하면 메시지가 스레드의 메시지 큐에 배치됩니다. 그러나 이러한 방식으로 게시된 메시지는 창과 연결되지 않으므로 MFC는 메시지 또는 명령 처리기에 메시지를 디스패치하지 않습니다. 이러한 메시지를 처리하려면 파생 클래스의 함수를 PreTranslateMessage() 재정의 CWinApp하고 메시지를 수동으로 처리합니다.

CWinThread::PreTranslateMessage

Windows 함수에 디스패치되기 전에 창 메시지를 필터링하도록 이 함수를 재정의합니다DispatchMessage.TranslateMessage

virtual BOOL PreTranslateMessage(MSG* pMsg);

매개 변수

pMsg
처리할 MSG 메시지를 포함하는 구조를 가리킵니다.

Return Value

메시지가 완전히 처리되고 PreTranslateMessage 더 이상 처리되지 않아야 하는 경우 0이 아닙니다. 메시지를 정상적인 방식으로 처리해야 하는 경우 0입니다.

설명

이 멤버 함수는 사용자 인터페이스 스레드에서만 사용됩니다.

CWinThread::ProcessMessageFilter

프레임워크의 후크 함수는 이 멤버 함수를 호출하여 특정 Windows 메시지를 필터링하고 응답합니다.

virtual BOOL ProcessMessageFilter(
    int code,
    LPMSG lpMsg);

매개 변수

code
후크 코드를 지정합니다. 이 멤버 함수는 코드를 사용하여 처리하는 lpMsg방법을 결정합니다.

lpMsg
Windows MSG 구조체에 대한 포인터입니다.

Return Value

메시지가 처리되는 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

후크 함수는 애플리케이션의 일반 메시지 처리로 전송되기 전에 이벤트를 처리합니다.

이 고급 기능을 재정의하는 경우 기본 클래스 버전을 호출하여 프레임워크의 후크 처리를 유지 관리해야 합니다.

CWinThread::ProcessWndProcException

프레임워크는 처리기가 스레드의 메시지 또는 명령 처리기 중 하나에서 throw된 예외를 catch하지 않을 때마다 이 멤버 함수를 호출합니다.

virtual LRESULT ProcessWndProcException(
    CException* e,
    const MSG* pMsg);

매개 변수

e
처리되지 않은 예외를 가리킵니다.

pMsg
프레임워크에서 예외를 MSG 발생시킨 Windows 메시지에 대한 정보가 포함된 구조를 가리킵니다.

Return Value

예외가 WM_CREATE 생성되면 -1이고, 그렇지 않으면 0입니다.

설명

이 멤버 함수를 직접 호출하지 마세요.

이 멤버 함수의 기본 구현은 다음 메시지에서 생성된 예외만 처리합니다.

명령 작업
WM_CREATE 실패하다.
WM_PAINT 영향을 받는 창의 유효성을 검사하여 다른 WM_PAINT 메시지가 생성되지 않도록 합니다.

예외의 전역 처리를 제공하도록 이 멤버 함수를 재정의합니다. 기본 동작을 표시하려는 경우에만 기본 기능을 호출합니다.

이 멤버 함수는 메시지 펌프가 있는 스레드에서만 사용됩니다.

CWinThread::PumpMessage

스레드의 메시지 루프를 포함합니다.

virtual BOOL PumpMessage();

설명

PumpMessage 에는 스레드의 메시지 루프가 포함되어 있습니다. PumpMessage 는 스레드의 메시지를 펌핑하기 위해 호출 CWinThread 됩니다. 직접 호출 PumpMessage 하여 메시지를 강제로 처리하거나 재정의하여 기본 동작을 변경할 수 있습니다 PumpMessage .

직접 호출 PumpMessage 하고 기본 동작을 재정의하는 것은 고급 사용자에게만 권장됩니다.

CWinThread::ResumeThread

멤버 함수에 의해 일시 중단된 스레드 또는 플래그를 사용하여 만든 CREATE_SUSPENDED 스레드의 SuspendThread 실행을 다시 시작하기 위해 호출됩니다.

DWORD ResumeThread();

Return Value

성공하면 스레드의 이전 일시 중단 횟수입니다. 0xFFFFFFFF 그렇지 않으면. 반환 값이 0이면 현재 스레드가 일시 중단되지 않았습니다. 반환 값이 1이면 스레드가 일시 중단되었지만 이제 다시 시작됩니다. 1보다 큰 반환 값은 스레드가 일시 중단된 상태로 유지됨을 의미합니다.

설명

현재 스레드의 일시 중단 수가 1씩 줄어듭니다. 일시 중단 횟수가 0으로 줄면 스레드는 실행을 다시 시작합니다. 그렇지 않으면 스레드가 일시 중단된 상태로 유지됩니다.

CWinThread::Run

사용자 인터페이스 스레드에 대한 기본 메시지 루프를 제공합니다.

virtual int Run();

Return Value

int 스레드에서 반환되는 값입니다. 이 값은 호출 GetExitCodeThread하여 검색할 수 있습니다.

설명

Run 는 애플리케이션이 메시지를 받을 때까지 Windows 메시지를 획득하고 디스패치합니다 WM_QUIT . 스레드의 메시지 큐에 현재 메시지가 Run 없는 경우 유휴 시간 처리를 수행하도록 호출 OnIdle 합니다. 들어오는 메시지는 특수 처리를 위해 PreTranslateMessage 멤버 함수로 이동한 다음 표준 키보드 번역을 위한 Windows 함수 TranslateMessage 로 이동합니다. 마지막으로 Windows 함수가 DispatchMessage 호출됩니다.

Run 는 거의 재정의되지 않지만 특수 동작을 구현하도록 재정의할 수 있습니다.

이 멤버 함수는 사용자 인터페이스 스레드에서만 사용됩니다.

CWinThread::SetThreadPriority

이 함수는 우선 순위 클래스 내에서 현재 스레드의 우선 순위 수준을 설정합니다.

BOOL SetThreadPriority(int nPriority);

매개 변수

nPriority
우선 순위 클래스 내에서 새 스레드 우선 순위 수준을 지정합니다. 이 매개 변수는 가장 높은 우선 순위에서 가장 낮은 값으로 나열된 다음 값 중 하나여야 합니다.

  • THREAD_PRIORITY_TIME_CRITICAL

  • THREAD_PRIORITY_HIGHEST

  • THREAD_PRIORITY_ABOVE_NORMAL

  • THREAD_PRIORITY_NORMAL

  • THREAD_PRIORITY_BELOW_NORMAL

  • THREAD_PRIORITY_LOWEST

  • THREAD_PRIORITY_IDLE

이러한 우선 순위에 대한 자세한 내용은 Windows SDK를 참조 SetThreadPriority 하세요.

Return Value

함수가 성공한 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

성공적으로 반환된 후에 CreateThread 만 호출할 수 있습니다.

CWinThread::SuspendThread

현재 스레드의 일시 중단 횟수를 증분합니다.

DWORD SuspendThread();

Return Value

성공하면 스레드의 이전 일시 중단 횟수입니다. 0xFFFFFFFF 그렇지 않으면.

설명

스레드의 일시 중단 수가 0보다 큰 경우 해당 스레드는 실행되지 않습니다. 멤버 함수를 호출하여 스레드를 다시 시작합니다 ResumeThread .

참고 항목

CCmdTarget 수업
계층 구조 차트
CWinApp 수업
CCmdTarget 수업