다음을 통해 공유


스레드 순서 지정 서비스

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

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

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

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

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

스레드 순서 그룹의 스레드는 AvRtWaitOnThreadOrderingGroup 함수에 의해 제어되는 루프 내에 처리 코드를 묶습니다. 먼저 선행 작업 스레드는 그룹에 가입한 순서대로 한 번에 하나씩 실행되고 부모 및 후속 스레드는 AvRtWaitOnThreadOrderingGroup대한 호출에서 차단됩니다. 각 선행 스레드의 처리가 완료되면, 제어가 처리 루프의 시작으로 돌아가고 스레드는 다음 차례가 올 때까지 차단하기 위해 AvRtWaitOnThreadOrderingGroup을 다시 호출합니다. 모든 선행 스레드가 이 함수를 호출한 후 스레드 순서 지정 서비스는 부모 스레드를 예약할 수 있습니다. 마지막으로 부모 스레드가 처리를 완료하고 AvRtWaitOnThreadOrderingGroup 호출하면 스레드 순서 지정 서비스는 그룹에 가입한 순서대로 후속 스레드를 한 번에 하나씩 예약할 수 있습니다. 모든 스레드가 자신의 실행을 완료하면, 모든 스레드는 해당 기간의 남은 시간이 끝날 때까지 기다린 후에 다시 실행됩니다.

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

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