Spec-Zone.ru › Haskell 9

Control.Concurrent.Chan

Авторское право (c) The University of Glasgow 2001
Лицензия В стиле BSD (см. файл libraries/base/LICENSE)
Сопровождающий libraries@haskell.org
Стабильность стабильный
Переносимость непереносимый (параллелизм)
Безопасный Haskell Trustworthy
Язык Haskell2010

Содержание

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

Описание

Каналы неограниченной длины.

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

Тип Chan

data Chan a Source

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

Экземпляры
Подробности экземпляров
Eq (Chan a) Source

Начиная с: base-4.4.0.0

Подробности экземпляра

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

Методы

(==) :: Chan a -> Chan a -> Bool Source

(/=) :: Chan a -> Chan a -> Bool Source

Операции

newChan :: IO (Chan a) Source

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

writeChan :: Chan a -> a -> IO () Source

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

readChan :: Chan a -> IO a Source

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

Вызывает BlockedIndefinitelyOnMVar, если канал пуст и ни один другой поток не хранит ссылку на канал.

dupChan :: Chan a -> IO (Chan a) Source

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

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

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

getChanContents :: Chan a -> IO [a] Source

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

writeList2Chan :: Chan a -> [a] -> IO () Source

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

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

Spec-Zone.ru

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