Share via


스레드 순서 지정 서비스

스레드 순서 지정 서비스는 하나 이상의 클라이언트 스레드 실행을 제어합니다. 지정된 기간 동안 및 상대 순서로 각 클라이언트 스레드가 한 번 실행되도록 합니다.

Windows Server 2003 및 Windows XP: 스레드 순서 지정 서비스는 Windows Vista 및 Windows Server 2008부터 사용할 수 있습니다.

스레드 순서 지정 서비스는 기본적으로 꺼져 있으며 사용자가 시작해야 합니다. 스레드 순서 지정 서비스가 실행되는 동안 시스템이 유휴 상태인 경우에도 새 요청이 있는지 여부를 검사 위해 5초마다 활성화됩니다. 이렇게 하면 시스템이 5초 이상 절전 모드로 설정되지 않아 시스템이 더 많은 전력을 소비하게 됩니다. 에너지 효율이 애플리케이션에 중요한 경우 스레드 순서 지정 서비스를 사용하지 않고 대신 시스템 스케줄러가 스레드 실행을 관리하도록 허용하는 것이 좋습니다.

각 클라이언트 스레드는 스레드 순서 그룹에 속합니다. 부모 스레드AvRtCreateThreadOrderingGroup 함수를 호출하여 하나 이상의 스레드 순서 그룹을 만듭니다. 부모 스레드는 이 함수를 사용하여 스레드 순서 그룹 및 제한 시간 간격에 대한 기간을 지정합니다.

추가 클라이언트 스레드는 AvRtJoinThreadOrderingGroup 함수를 호출하여 기존 스레드 순서 그룹을 조인합니다. 이러한 스레드는 실행 순서에서 상위 스레드의 선행 또는 후속 스레드인지 여부를 나타냅니다. 각 클라이언트 스레드는 각 기간마다 일정량의 처리를 완료해야 합니다. 그룹 내의 모든 스레드는 기간 및 제한 시간 간격 내에서 실행을 완료해야 합니다.

스레드 순서 지정 그룹의 스레드는 AvRtWaitOnThreadOrderingGroup 함수에 의해 제어되는 루프 내에 처리 코드를 묶습니다. 먼저 선행 스레드는 그룹에 조인한 순서대로 한 번에 하나씩 실행되고 부모 및 후속 스레드는 AvRtWaitOnThreadOrderingGroup에 대한 호출에서 차단됩니다. 각 선행 스레드의 처리가 완료되면 실행 제어가 처리 루프의 맨 위로 반환되고 스레드 는 AvRtWaitOnThreadOrderingGroup을 다시 호출하여 다음 턴까지 차단합니다. 모든 선행 스레드가 이 함수를 호출한 후 스레드 순서 지정 서비스는 부모 스레드를 예약할 수 있습니다. 마지막으로 부모 스레드가 처리를 완료하고 AvRtWaitOnThreadOrderingGroup을 다시 호출하면 스레드 순서 지정 서비스는 후속 스레드를 그룹에 조인한 순서대로 한 번에 하나씩 예약할 수 있습니다. 마침표가 끝나기 전에 모든 스레드가 실행을 완료하면 모든 스레드는 마침표의 나머지 기간이 경과할 때까지 기다렸다가 다시 실행됩니다.

클라이언트가 스레드 순서 지정 그룹의 일부로 더 이상 실행되지 않아도 되면 AvRtLeaveThreadOrderingGroup 함수를 호출하여 그룹에서 자신을 제거합니다. 부모 스레드는 스레드 순서 그룹에서 자신을 제거해서는 안 됩니다. 스레드가 마침표와 제한 시간 간격이 경과하기 전에 실행을 완료하지 않으면 그룹에서 삭제됩니다.

부모 스레드는 AvRtDeleteThreadOrderingGroup 함수를 호출하여 스레드 순서 그룹을 삭제합니다. 부모 스레드가 마침표와 시간 제한 간격이 경과하기 전에 실행을 완료하지 않으면 스레드 순서 그룹도 제거됩니다. 스레드 순서 그룹이 제거되면 해당 그룹의 스레드에서 AvRtWaitOnThreadOrderingGroup 에 대한 모든 호출이 실패하거나 시간이 초과됩니다.