Delen via


Beste praktijken voor het gebruik van de draadpool

In dit onderwerp worden de beste praktijken beschreven voor het werken met de thread pool.

Aanbevelingen

  • Gebruik de threadgroep om parallel werk uit te voeren in uw app.

  • Gebruik werkitems om uitgebreide taken uit te voeren zonder de UI-thread te blokkeren.

  • Werkitems maken die kortlevend en onafhankelijk zijn. Werkitems worden asynchroon uitgevoerd en ze kunnen in elke volgorde vanuit de wachtrij naar de pool worden verzonden.

  • Verzend updates naar de UI-thread met windows.UI.Core.CoreDispatcher.

  • Gebruik ThreadPoolTimer.CreateTimer in plaats van de functie Slaapstand .

  • Gebruik de threadgroep in plaats van uw eigen threadbeheersysteem te maken. De threadpool wordt uitgevoerd op besturingssysteemniveau met geavanceerde mogelijkheden en is geoptimaliseerd om dynamisch te schalen op basis van apparaatresources en activiteiten binnen het proces en in het hele systeem.

  • Zorg er in C++ voor dat gedelegeerden van werkitems het Agile Threading-model gebruiken (C++-gemachtigden zijn standaard flexibel).

  • Gebruik vooraf toegewezen werkitems wanneer u een resourcetoewijzingsfout niet kunt tolereren op het moment van gebruik.

Dingen die je niet moet doen

  • Maak geen periodieke timers aan met een periode waarde van <1 milliseconde (inclusief 0). Dit zorgt ervoor dat het werkitem zich gedraagt als een eenmalige timer.

  • Verzend geen periodieke werkitems die langer duren dan de hoeveelheid tijd die u hebt opgegeven in de periodeparameter .

  • Probeer geen UI-updates (behalve pop-ups en meldingen) te verzenden van een werkitem dat is verzonden vanuit een achtergrondtaak. Gebruik in plaats daarvan de voortgang van achtergrondtaken en voltooiingshandlers, bijvoorbeeld IBackgroundTaskInstance.Progress.

  • Wanneer u werkitemhandlers gebruikt die gebruikmaken van het asynchrone trefwoord, wordt niet ervan uitgegaan dat alle code in de handler is uitgevoerd wanneer de volledige status is ingesteld op het werkitem. Het werkitem van de threadgroep kan worden ingesteld op de volledige status voordat alle code in de handler is uitgevoerd. Code na het trefwoord await in de handler kan worden uitgevoerd nadat het werkitem is ingesteld op de complete status.

  • Probeer niet meer dan één keer een vooraf toegewezen werkitem uit te voeren zonder het opnieuw te initialiseren. Een periodiek werkitem maken