Trådordningstjänst

trådordningstjänsten styr körningen av en eller flera klienttrådar. Det säkerställer att varje klienttråd körs en gång under den angivna perioden och i relativ ordning.

Windows Server 2003 och Windows XP: Trådordningstjänsten är tillgänglig från och med Windows Vista och Windows Server 2008.

Trådordningstjänsten är inaktiverad som standard och måste startas av användaren. Medan trådordningstjänsten körs aktiveras den var 5:e sekund för att kontrollera om det finns en ny begäran, även om systemet är inaktivt. Detta hindrar systemet från att sova längre än 5 sekunder, vilket gör att systemet förbrukar mer ström. Om energieffektiviteten är viktig för programmet är det bättre att inte använda trådordningstjänsten och i stället låta systemschemaläggaren hantera körning av trådar.

Varje klienttråd tillhör en trådordningsgrupp. Den överordnade tråden skapar en eller flera trådordningsgrupper genom att anropa funktionen AvRtCreateThreadOrderingGroup. Den överordnade tråden använder den här funktionen för att ange perioden för trådordningsgruppen och ett tidsgränsintervall.

Ytterligare klienttrådar anropar funktionen AvRtJoinThreadOrderingGroup för att ansluta till en befintlig trådordningsgrupp. Dessa trådar anger om de ska vara en föregångare eller efterföljare till den överordnade tråden i den ordning de körs. Varje klienttråd förväntas slutföra en viss mängd bearbetning varje period. Alla trådar i gruppen bör slutföra körningen inom den angivna perioden plus tidsgränsintervallet.

Trådarna i en trådordningsgrupp kapslar in sin bearbetningskod i en loop som styrs av funktionen AvRtWaitOnThreadOrderingGroup. Först körs föregående trådar en i taget i den ordning som de anslöt till gruppen, medan de överordnade och efterföljande trådarna blockeras på sina anrop till AvRtWaitOnThreadOrderingGroup. När varje föregående tråd är klar med sin bearbetning återgår kontroll över körningen till toppen av bearbetningsloopen och tråden anropar AvRtWaitOnThreadOrderingGroup igen för att vänta på sin tur igen. När alla föregående trådar har anropat den här funktionen kan trådordningstjänsten schemalägga den överordnade tråden. När den överordnade tråden har slutfört bearbetningen och anropar AvRtWaitOnThreadOrderingGroup igen kan trådordningstjänsten schemalägga efterföljande trådar en i taget i den ordning de anslöt till gruppen. Om alla trådar slutför körningen innan en period tar slut väntar alla trådar tills resten av perioden förflutit innan några körs igen.

När klienten inte längre behöver köras som en del av trådordningsgruppen anropas funktionen AvRtLeaveThreadOrderingGroup för att ta bort sig själv från gruppen. Observera att den överordnade tråden inte ska ta bort sig själv från en trådordningsgrupp. Om en tråd inte slutför sin körning innan perioden och tidsgränsintervallet har gått ut, tas den bort från gruppen.

Den överordnade tråden anropar funktionen AvRtDeleteThreadOrderingGroup för att ta bort trådordningsgruppen. Trådordningsgruppen förstörs också om den överordnade tråden inte avslutar sin körning innan perioden och tidsgränsintervallet har löpt ut. När trådordningsgruppen förstörs misslyckas eller överskrider tidsgränsen för alla anrop till AvRtWaitOnThreadOrderingGroup från trådar i den gruppen.