Spec-Zone.ru › Haskell 8

Control.Concurrent.Chan

Авторские права (c) Университет Глазго 2001
Лицензия BSD-стиль (см. файл libraries/base/LICENSE)
Поддержка libraries@haskell.org
Стабильность экспериментальная
Переносимость непереносимая (конкурентность)
Безопасный 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/8.10.2/docs/html/libraries/base-4.14.1.0/Control-Concurrent-Chan.html

Spec-Zone.ru

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