-
Thread와 Thread 스케줄링프로그래밍 언어/C || C++ 2018. 5. 10. 11:20
Thread 의 우선순위를 지정하는 방법에 대해서 공부해보겠습니다!
우선 Thread 에 대해서 알아야겠죠?
Thread 란 병렬적으로 여러개의 작업을 하기 위해 프로세스를 여러개의 Thread 로 나누어 작업을 수행하게 합니다.
쓰레드는 한번에 하나씩 동작할 수 있으므로 어떤 Thread 가 먼저 실행될 지는 아무도 알지 못합니다.
따라서 우선순위를 지정하여 Thread 의 스케줄링을 도울 수 있습니다.
그럼 우선순위를 지정하는 함수의 원형을 먼저 살펴보겠습니다.
BOOL WINAPI SetThreadPriority( _In_ HANDLE hThread, _In_ int nPriority );
Parameter 의 의미를 살펴보겠습니다.
HANDLE hThread [in]
: 우선순위 값을 설정할 스레드의 핸들.
*핸들은 THREAD_SET_INFORMATION or THREAD_SET_LIMITED_INFORMATION 의 접근 권한이 반드시 있어야 합니다*
nPriority [in]
: Thread 의 우선순위 값
Priority
Meaning
THREAD_MODE_BACKGROUND_BEGIN
- 0x00010000
백그라운드 처리 모드 시작, 우선 순위를 낮추어 백그라운드 작업을 수행하게 한다.
hThead 가 현재 Thread 핸들인 경우에만 지정할 수 있음, 이미 백그라운드 모드면 실패
THREAD_MODE_BACKGROUND_END
- 0x00020000
백그라운드 처리 모드 종료. 백그라운드 처리 모드로 들어가기 전 우선순위로 복원시킴.
hThead 가 현재 Thread 핸들인 경우에 지정 가능, hThead 가 백그라운드 처리 모드가 아니면 실패
THREAD_PRIORITY_ABOVE_NORMAL
- 1
보통보다 조금 높은 우선순위
THREAD_PRIORITY_BELOW_NORMAL
- -1
보통보다 조금 낮은 우선순위
THREAD_PRIORITY_HIGHEST
- 2
가장 높은 우선순위
THREAD_PRIORITY_IDLE
- -15
가장 낮은 우선순위보다 더 낮은 우선순위
THREAD_PRIORITY_LOWEST
- -2
가장 낮은 우선순위
THREAD_PRIORITY_NORMAL
- 0
보통
THREAD_PRIORITY_TIME_CRITICAL
- 15
가장 높은 우선순위보다 더 높은 우선순위
Thread 의 우선순위를 지정하여 스케줄링을 도울 수 있습니다.
*모든 Thread 는 기본적으로 THREAD_PRIORITY_NORMAL 으로 우선순위가 설정되어 있음을 참고하세요*
'프로그래밍 언어 > C || C++' 카테고리의 다른 글
C++ 에서 delete는 Virtual 일까? (0) 2018.10.12 C++ 람다 표현식 (Lambda Expression) (0) 2018.10.10 [C언어] bool, Boolean (0) 2018.05.08 TCHAR, LPCTSTR (0) 2018.05.08 댓글