Spec-Zone.ru › Haskell 9

GHC.IO.SubSystem

Авторские права (c) Университет Глазго 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 FDs (через уровни трансляции).

Во многих местах в коде базовой библиотеки ввода-вывода для корректности или производительности в Windows нам необходимо использовать различные пути кода в зависимости от используемого стиля менеджера ввода-вывода. Менеджер ввода-вывода устанавливается при запуске RTS (и значение по умолчанию можно изменить с помощью флагов RTS). В Windows это значение получается путём чтения глобальной переменной, которая устанавливается менеджером ввода-вывода RTS при запуске.

В не-Windows системах это значение всегда IoPOSIX.

data IoSubSystem Источник

Система ввода-вывода, используемая в программе.

С момента: base-4.9.0.0

Конструкторы

IoPOSIX

Использовать систему ввода-вывода POSIX

IoNative

Использовать платформенно-родную подсистему. Для систем Unix это то же самое, что IoPOSIX, но в Windows это означает использование родных API Windows для ввода-вывода, включая IOCP и RIO.

Примеры
Подробности примеров
Перечисление 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] Исходный код

Вывод IoSubSystem Исходный код
Подробности примера

Определено в GHC.Internal.IO.SubSystem

Методы

showsPrec :: Int -> IoSubSystem -> ShowS Исходный код

show :: IoSubSystem -> Строка Исходный код

showList :: [IoSubSystem] -> ShowS Исходный код

Равенство IoSubSystem Исходный код
Подробности примера

Определено в GHC.Internal.IO.SubSystem

Методы

(==) :: IoSubSystem -> IoSubSystem -> Булево Исходный код

(/=) :: IoSubSystem -> IoSubSystem -> Булево Исходный код

conditional :: a -> a -> a Исходный код

Условно выполняет действие в зависимости от настроенной подсистемы ввода-вывода. В системах POSIX всегда выполняется первое действие. В Windows выполняется второе действие, если WINIO активен, в противном случае используется первое действие.

(<!>) :: a -> a -> a infixl 7 Исходный код

Инфиксная версия conditional. posix ! windows == conditional posix windows

isWindowsNativeIO :: Булево Исходный код

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.12.1/docs/libraries/base-4.21.0.0-8e62/GHC-IO-SubSystem.html

Spec-Zone.ru

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