Spec-Zone.ru › Haskell 7

Foreign.Marshal.Pool

Авторские права (c) Sven Panne 2002-2004
Лицензия BSD-стиль (см. файл libraries/base/LICENSE)
Поддержка sven.panne@aedion.de
Устойчивость временная
Переносимость переносимая
Безопасный Haskell Надежный
Язык Haskell2010

Содержание

  • Управление пулом
  • (Пере)выделение в рамках пула
  • Объединенное выделение и маршаллинг

Описание

Этот модуль содержит поддержку управления памятью в пулах. В этой схеме (пере)выделение относится к заданному пулу, и все содержимое пула освобождается при освобождении самого пула. Это полезно, когда alloca с его неявным выделением и освобождением недостаточно гибко, а явное использование malloc и free слишком громоздко.

Управление пулом

data Pool Source

Пул памяти.

newPool :: IO Pool Source

Выделить новый пул памяти.

freePool :: Pool -> IO () Source

Освободить пул памяти и все выделенные в нём ресурсы.

withPool :: (Pool -> IO b) -> IO b Source

Выполнить действие с новым пулом памяти, который автоматически освобождается (вместе со своим содержимым) после завершения действия.

(Пере)выделение в рамках пула

pooledMalloc :: Storable a => Pool -> IO (Ptr a) Source

Выделить место для типа storable в данном пуле. Размер выделенной области определяется методом sizeOf из экземпляра Storable для соответствующего типа.

pooledMallocBytes :: Pool -> Int -> IO (Ptr a) Source

Выделить заданное количество байтов памяти в пуле.

pooledRealloc :: Storable a => Pool -> Ptr a -> IO (Ptr a) Source

Изменить область памяти для элемента в пуле на заданный размер требуемого типа.

pooledReallocBytes :: Pool -> Ptr a -> Int -> IO (Ptr a) Source

Изменить область памяти для элемента в пуле на заданный размер.

pooledMallocArray :: Storable a => Pool -> Int -> IO (Ptr a) Source

Выделить место для заданного количества элементов типа storable в пуле.

pooledMallocArray0 :: Storable a => Pool -> Int -> IO (Ptr a) Source

Выделить память для заданного числа элементов хранимого типа в пуле, но оставить место для дополнительного элемента, чтобы сигнализировать об окончании массива.

pooledReallocArray :: Storable a => Pool -> Ptr a -> Int -> IO (Ptr a) Источник

Изменить размер массива в заданном пуле.

pooledReallocArray0 :: Storable a => Pool -> Ptr a -> Int -> IO (Ptr a) Источник

Изменить размер массива с маркером конца в заданном пуле.

Объединённое выделение памяти и маршаллинг

pooledNew :: Storable a => Pool -> a -> IO (Ptr a) Источник

Выделить память для значения в заданном пуле и маршаллировать значение в это хранилище.

pooledNewArray :: Storable a => Pool -> [a] -> IO (Ptr a) Источник

Выделить последовательную память для списка значений в заданном пуле и маршаллировать эти значения в него.

pooledNewArray0 :: Storable a => Pool -> a -> [a] -> IO (Ptr a) Источник

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

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/Foreign-Marshal-Pool.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API