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 Alloc
program .
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