Funkcje zarządzania pamięcią

W tym dokumencie opisano funkcje zarządzania pamięcią zapewniane przez środowisko uruchomieniowe współbieżności, które ułatwiają przydzielanie i zwalnianie pamięci w sposób współbieżny.

Napiwek

Środowisko uruchomieniowe współbieżności udostępnia domyślny harmonogram, dlatego nie jest wymagane utworzenie go w aplikacji. Ponieważ harmonogram zadań ułatwia dostosowanie wydajności aplikacji, zalecamy rozpoczęcie od biblioteki równoległych wzorców (PPL) lub biblioteki agentów asynchronicznych, jeśli dopiero zaczynasz pracę ze środowiskiem uruchomieniowym współbieżności.

Środowisko uruchomieniowe współbieżności zapewnia dwie funkcje zarządzania pamięcią zoptymalizowane pod kątem przydzielania i zwalniania bloków pamięci w sposób współbieżny. Funkcja concurrency::Alloc przydziela blok pamięci przy użyciu określonego rozmiaru. Funkcja concurrency::Free zwalnia pamięć przydzieloną przez Allocprogram .

Uwaga

Funkcje Alloc i Free polegają na sobie na sobie. Free Użyj funkcji tylko do zwolnienia pamięci przydzielanej przy użyciu Alloc funkcji . Ponadto w przypadku używania Alloc funkcji do przydzielania pamięci użyj tylko Free tej funkcji, aby zwolnić tę pamięć.

Alloc Użyj funkcji i Free podczas przydzielania i zwalniania stałego zestawu rozmiarów alokacji z różnych wątków lub zadań. Środowisko uruchomieniowe współbieżności buforuje pamięć przydzielaną przez stertę środowiska uruchomieniowego języka C. Środowisko uruchomieniowe współbieżności przechowuje oddzielną pamięć podręczną dla każdego uruchomionego wątku; w związku z tym środowisko uruchomieniowe zarządza pamięcią bez użycia blokad lub barier pamięci. Aplikacja korzysta bardziej z Alloc funkcji i Free , gdy pamięć podręczna jest uzyskiwana częściej. Na przykład wątek, który często wywołuje zarówno Alloc , jak i Free korzyści więcej niż wątek, który przede wszystkim wywołuje Alloc lub Free.

Uwaga

Jeśli używasz tych funkcji zarządzania pamięcią, a aplikacja używa dużej ilości pamięci, aplikacja może wprowadzić stan o niskiej ilości pamięci wcześniej niż oczekiwano. Ponieważ bloki pamięci buforowane przez jeden wątek nie są dostępne dla żadnego innego wątku, jeśli jeden wątek zawiera dużo pamięci, ta pamięć nie jest dostępna.

Przykład

Przykład użycia Alloc funkcji i w celu zwiększenia wydajności pamięci można znaleźć w temacie How to: Use Alloc and Free Free to Improve Memory Performance (Jak używać funkcji Alloc i Free w celu zwiększenia wydajności pamięci).

Zobacz też

Harmonogram zadań
Instrukcje: używanie z funkcji Alloc i Free do poprawiania wydajności pamięci