ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글