GHC.StaticPtr
| Авторские права | (C) 2014 I/O Tweag |
|---|---|
| Лицензия | см. libraries/base/LICENSE |
| Сопровождающий | ghc-devs@haskell.org |
| Стабильность | внутренний |
| Переносимость | непереносимый (расширения GHC) |
| Безопасный Haskell | Нет |
| Язык | Haskell2010 |
Описание
Символьные ссылки на значения.
Ссылки на значения обычно реализуются с помощью адресов памяти. Это удобно, когда значения передаются между разными частями одного процесса.
Однако при передаче значений между разными процессами, которые могут выполняться на разных машинах, адреса уже не подходят, поскольку каждый процесс может использовать разные адреса для хранения заданного значения.
Чтобы решить эту проблему, ссылки, предоставляемые этим модулем, содержат ключ, с помощью которого можно найти значения в каждом процессе. Каждый процесс поддерживает глобальную таблицу ссылок, в которой можно выполнить поиск по заданному ключу. Эта таблица называется таблицей статических указателей. Затем по ссылке можно получить значение.
Взаимодействующие процессы должны согласовать ключи, используемые для обращения к значениям в таблице статических указателей, иначе поиск завершится неудачей. Только процессы, запущенные из одного и того же исполняемого файла программы, гарантированно используют одинаковый набор ключей.
data StaticPtr a Исходный код
Ссылка на значение типа a.
Экземпляры
| IsStatic StaticPtr Исходный код | Начиная с: base-4.9.0.0 |
Определено в GHC.Internal.StaticPtr МетодыfromStaticPtr :: Typeable a => StaticPtr a -> StaticPtr a Исходный код | |
deRefStaticPtr :: StaticPtr a -> a Исходный код
Разыменовывает статический указатель.
type StaticKey = Fingerprint Исходный код
Ключ для StaticPtr, который можно сериализовать и использовать с unsafeLookupStaticPtr.
staticKey :: StaticPtr a -> StaticKey Исходный код
StaticKey, с помощью которого можно найти заданный StaticPtr.
unsafeLookupStaticPtr :: StaticKey -> IO (Maybe (StaticPtr a)) Исходный код
Ищет StaticPtr по его StaticKey.
Если StaticPtr не найден, возвращает Nothing.
Эта функция небезопасна, поскольку поведение программы не определено, если тип возвращённого StaticPtr не соответствует ожидаемому.
data StaticPtrInfo Исходный код
Различные сведения, доступные для отладки.
Конструкторы
| StaticPtrInfo | |
Поля
| |
Экземпляры
| Show StaticPtrInfo Исходный код | Начиная с: base-4.8.0.0 |
Определено в GHC.Internal.StaticPtr МетодыshowsPrec :: Int -> StaticPtrInfo -> ShowS Исходный код show :: StaticPtrInfo -> String Исходный код showList :: [StaticPtrInfo] -> ShowS Исходный код | |
staticPtrInfo :: StaticPtr a -> StaticPtrInfo Исходный код
StaticPtrInfo заданного StaticPtr.
staticPtrKeys :: IO [StaticKey] Исходный код
Список всех известных ключей.
class IsStatic (p :: Type -> Type) where Исходный код
Класс для объектов, создаваемых из статических указателей.
GHC оборачивает каждое использование ключевого слова static в fromStaticPtr. Поскольку ключевое слово static требует, чтобы его аргумент был экземпляром Typeable, fromStaticPtr также содержит ограничение Typeable.
Методы
fromStaticPtr :: Typeable a => StaticPtr a -> p a Исходный код
Экземпляры
| IsStatic StaticPtr Исходный код | Начиная с: base-4.9.0.0 |
Определено в GHC.Internal.StaticPtr МетодыfromStaticPtr :: Typeable a => StaticPtr a -> StaticPtr a Исходный код | |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.14.1/docs/libraries/base-4.22.0.0-66f8/GHC-StaticPtr.html