GHC.IO.SubSystem
| Авторские права | (c) The University of Glasgow 2017 |
|---|---|
| Лицензия | см. libraries/base/LICENSE |
| Сопровождающий | libraries@haskell.org |
| Стабильность | внутренний |
| Переносимость | непереносимый |
| Безопасный Haskell | Безопасный |
| Язык | Haskell2010 |
Описание
Интерфейс управления IoSubSystem. Эти методы можно использовать, чтобы устранить неоднозначность между двумя операциями.
API этого модуля нестабилен и не предназначен для использования широкой публикой. Если вам крайне необходимо от него зависеть, обязательно укажите строгую верхнюю границу версии, например base < 4.X вместо base < 5, поскольку интерфейс может быстро изменяться без особого предупреждения.
withIoSubSystem :: (IoSubSystem -> IO a) -> IO a Исходный код
withIoSubSystem' :: (IoSubSystem -> a) -> a Исходный код
whenIoSubSystem :: IoSubSystem -> IO () -> IO () Исходный код
ioSubSystem :: IoSubSystem Исходный код
Используемая IoSubSystem.
Это необходимо для оптимизации поддержки различных менеджеров ввода-вывода в Windows. GHC поддерживает как новый менеджер WinIO, так и старый MIO (многопоточный), а также устаревший win32-legacy (однопоточный). Менеджер WinIO использует собственные дескрипторы Win32 HANDLE, тогда как два других используют файловые дескрипторы в стиле POSIX (через уровни преобразования).
Во многих местах кода базовой библиотеки ввода-вывода для корректной работы или повышения производительности в Windows необходимо выбирать разные пути выполнения в зависимости от используемого стиля менеджера ввода-вывода. Менеджер ввода-вывода задаётся при запуске RTS (значение по умолчанию можно переопределить с помощью флагов RTS). В Windows это значение получается чтением глобальной переменной, задаваемой менеджером IOManager из RTS при запуске.
В системах, отличных от Windows, это значение всегда равно IoPOSIX.
data IoSubSystem Исходный код
Подсистема ввода-вывода, используемая в программе.
Начиная с: base-4.9.0.0
Конструкторы
| IoPOSIX | Использовать подсистему ввода-вывода POSIX |
| IoNative | Использовать платформенную подсистему. В ОС Unix она совпадает с IoPOSIX, а в Windows означает использование собственных API Windows для ввода-вывода, включая IOCP и RIO. |
Экземпляры
| Eq IoSubSystem Исходный код | |
Определён в GHC.Internal.IO.SubSystem Методы(==) :: IoSubSystem -> IoSubSystem -> Bool Исходный код (/=) :: IoSubSystem -> IoSubSystem -> Bool Исходный код | |
| Enum IoSubSystem Исходный код | |
Определён в GHC.Internal.IO.SubSystem Методыsucc :: IoSubSystem -> IoSubSystem Исходный код pred :: IoSubSystem -> IoSubSystem Исходный код toEnum :: Int -> IoSubSystem Исходный код fromEnum :: IoSubSystem -> Int Исходный код enumFrom :: IoSubSystem -> [IoSubSystem] Исходный код enumFromThen :: IoSubSystem -> IoSubSystem -> [IoSubSystem] Исходный код enumFromTo :: IoSubSystem -> IoSubSystem -> [IoSubSystem] Исходный код enumFromThenTo :: IoSubSystem -> IoSubSystem -> IoSubSystem -> [IoSubSystem] Исходный код | |
| Show IoSubSystem Исходный код | |
Определён в GHC.Internal.IO.SubSystem МетодыshowsPrec :: Int -> IoSubSystem -> ShowS Исходный код show :: IoSubSystem -> String Исходный код showList :: [IoSubSystem] -> ShowS Исходный код | |
conditional :: a -> a -> a Исходный код
Условно выполняет действие в зависимости от настроенной подсистемы ввода-вывода. В системах POSIX всегда выполняет первое действие. В Windows выполняет второе действие, если активен WINIO, в противном случае — первое.
(<!>) :: a -> a -> a infixl 7 Исходный код
Инфиксная версия conditional. posix ! windows == conditional posix windows
© 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-IO-SubSystem.html