Dela via


Minneshanteringsfunktioner

Det här dokumentet beskriver minneshanteringsfunktionerna som concurrency Runtime tillhandahåller för att hjälpa dig att allokera och frigöra minne samtidigt.

Tips/Råd

Concurrency Runtime tillhandahåller en standardschemaläggare och därför behöver du inte skapa en i ditt program. Eftersom Schemaläggaren hjälper dig att finjustera prestanda för dina program rekommenderar vi att du börjar med PPL (Parallel Patterns Library) eller Asynchronous Agents Library om du är nybörjare på Concurrency Runtime.

Concurrency Runtime innehåller två minneshanteringsfunktioner som är optimerade för att allokera och frigöra minnesblock samtidigt. Funktionen concurrency::Alloc allokerar ett minnesblock med den angivna storleken. Funktionen concurrency::Free frigör det minne som allokerades av Alloc.

Anmärkning

Funktionerna Alloc och Free förlitar sig på varandra. Använd funktionen Free endast för att frigöra minne som du allokerar med funktionen Alloc. När du använder Alloc funktionen för att allokera minne använder du bara Free funktionen för att frigöra det minnet.

Använd Alloc- och Free-funktionerna när du allokerar och frigör en fast uppsättning allokeringsstorlekar från olika trådar eller arbetsuppgifter. Concurrency Runtime lagrar minne i cache som det allokerar från C Runtime-heapen. Concurrency Runtime har ett separat minnescache för varje tråd som är igång. Därför hanterar runtime minnet utan att använda lås eller minnesbarriärer. Ett program drar mer nytta av Alloc funktionerna och Free när minnescachen används oftare. Till exempel en tråd som ofta anropar både Alloc och Free fördelar mer än en tråd som främst anropar Alloc eller Free.

Anmärkning

När du använder dessa minneshanteringsfunktioner och programmet använder mycket minne kan programmet ange ett tillstånd med lite minne tidigare än förväntat. Eftersom de minnesblock som cachelagras av en tråd inte är tillgängliga för någon annan tråd, är minnet inte tillgängligt om en tråd innehåller mycket minne.

Exempel

Ett exempel som använder Alloc funktionerna och Free för att förbättra minnesprestanda finns i How to: Use Alloc and Free to Improve Memory Performance (Använda Alloc och Free för att förbättra minnesprestanda).

Se även

Aktivitetsschemaläggare
Så här gör du: Använd Alloc och Free för att förbättra minnesprestanda