Функции управления памятью

В этом документе описываются функции управления памятью, предоставляемые средой выполнения с параллелизмом для параллельного выделения и высвобождения памяти.

СоветСовет

Среда выполнения с параллелизмом предоставляет планировщик по умолчанию, поэтому вам не обязательно создавать собственный.Так как планировщик заданий помогает оптимизировать производительность приложений, рекомендуется начать с раздела Библиотека параллельных шаблонов или Библиотека асинхронных агентов, если вы не знакомы со средой выполнения с параллелизмом.

Среда выполнения с параллелизмом предоставляет две функции управления памятью, оптимизированные для выделения и освобождения блоков памяти в параллельном режиме.Concurrency::Alloc функция выделяет блок памяти с помощью указанного размера.Concurrency::Free функция освобождает память, выделенную с Alloc.

ПримечаниеПримечание

Функции Alloc и Free зависят друг от друга.Функцию Free следует использовать только для освобождения памяти, выделенной с использованием функции Alloc.Кроме того, если для выделения памяти используется функция Alloc, для освобождения этой памяти можно использовать только функцию Free.

Функции Alloc и Free следует использовать при выделении и освобождении фиксированных наборов выделяемых размеров из разных потоков или задач.Среда выполнения с параллелизмом кэширует память, выделенную из кучи среды выполнения с параллелизмом.Среда выполнения с параллелизмом содержит отдельный кэш памяти для каждого выполняемого потока; следовательно, среда выполнения управляет памятью без использования блокировок или барьеров памяти.Функции Alloc и Free можно использовать в приложении более эффективно, если доступ к кэшу памяти осуществляется чаще.Например, поток, который с равной частотой вызывает оба метода (Alloc и Free), функционирует эффективнее, чем поток, вызывающий преимущественно метод Alloc или Free.

ПримечаниеПримечание

Если используются упомянутые функции управления памятью и приложение использует много памяти, оно может перейти в состояние нехватки памяти быстрее, чем ожидалось.Поскольку блоки памяти, кэшируемые одним потоком, не доступны какому-либо другому потоку, если один поток занимает много памяти, эта память становится недоступной остальным потокам.

Пример

Пример, в котором функции Alloc и Free используются для повышения производительности памяти, см. в разделе Практическое руководство. Использование функций Alloc и Free для повышения производительности памяти.

См. также

Задачи

Практическое руководство. Использование функций Alloc и Free для повышения производительности памяти

Основные понятия

Планировщик задач (среда выполнения с параллелизмом)