Подсистема malloc адаптируется к изменениям в количестве активных потоков в приложении следующим образом: предоставляет средства для обмена свободными блоками между потоками. 2 Для этого, вероятно, время от времени требуется захват блокировок. 2
Также для решения проблем с узкими местами в распределении памяти можно предварительно выделить её. 1 Для этого нужно выделить всю память из одного потока, чтобы позже использовать её из всех потоков без конфликтов на уровне пользователя или ядра. 1
Ещё один вариант — использовать оптимизированную для многопоточной среды реализацию подсистемы malloc. 1 Например, модуль Heap_3.c в FreeRTOS делает вызовы стандартных библиотечных функций malloc() и free() защищёнными для использования с потоками путём приостановки работы шедулера. 4