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

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

Совет

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

Среда выполнения с параллелизмом предоставляет две функции управления памятью, оптимизированные для выделения и освобождения блоков памяти в параллельном режиме. Функция 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 для повышения производительности памяти

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

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

Журнал изменений

Дата

Журнал

Причина

Июль 2010

Содержимое реорганизовано.

Улучшение информации.