Spec-Zone.ru › Haskell 9

Control.Concurrent.Chan

Авторские права (c) Университет Глазго 2001
Лицензия BSD-стиль (см. файл libraries/base/LICENSE)
Поддержка libraries@haskell.org
Стабильность стабильная
Переносимость непереносимо (конкурентность)
Safe Haskell Надёжный
Язык Haskell2010

Содержание

  • Тип Chan
  • Операции
  • Интерфейс потока

Описание

Бесконечные каналы.

Каналы реализованы с использованием MVar и поэтому наследуют все ограничения, которые применяются к MVar (возможность гонок, тупиков и т. д.). Библиотека stm (транзакционная память) имеет более надёжную реализацию каналов под названием TChan.

Тип Chan

data Chan a Источник

Chan — это абстрактный тип, представляющий бесконечный канал FIFO.

Примеры использования
Подробности примеров
Eq (Chan a) Источник

С версии: base-4.4.0.0

Подробности примера

Определено в Control.Concurrent.Chan

Методы

(==) :: Chan a -> Chan a -> Bool Источник

(/=) :: Chan a -> Chan a -> Bool Источник

Операции

newChan :: IO (Chan a) Источник

Создаёт и возвращает новый экземпляр Chan.

writeChan :: Chan a -> a -> IO () Источник

Записывает значение в Chan.

readChan :: Chan a -> IO a Источник

Читает следующее значение из Chan. Блокируется, когда канал пуст. Поскольку конец чтения канала — MVar, эта операция наследует гарантии справедливости MVar (например, блокированные потоки в этой операции разбуживаются в порядке FIFO).

Выбрасывает BlockedIndefinitelyOnMVar при пустом канале и отсутствии другого потока, удерживающего ссылку на канал.

dupChan :: Chan a -> IO (Chan a) Источник

Создаёт дубликат Chan: дублированный канал сначала пуст, но данные, записываемые в любой из каналов, будут доступны в обоих. Таким образом, это создаёт своего рода канал широковещательной передачи, где данные, записанные кем-либо, видны всем остальным.

(Обратите внимание, что дублированный канал не равен исходному. Следовательно: fmap (c /=) $ dupChan c возвращает True для всех c.)

Интерфейс потока

getChanContents :: Chan a -> IO [a] Источник

Возвращает ленивый список, представляющий содержимое заданного Chan, подобно hGetContents.

writeList2Chan :: Chan a -> [a] -> IO () Источник

Записывает весь список элементов в Chan.

© 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/Control-Concurrent-Chan.html

Spec-Zone.ru

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