Использование Clojure DataFlow идиомы программирования - PullRequest
8 голосов
/ 30 декабря 2010

Может кто-нибудь объяснить, почему и как я бы использовал API программирования Clojure Dataflow, так как я не могу найти много информации об этом в Интернете.

1 Ответ

9 голосов
/ 30 декабря 2010

Я думаю, что наиболее полезно прочитать другую информацию о том, что такое программирование потока данных. Имхо, ребята из Groovy GPars имеют одни из лучших документов по потоку данных . В прошлом списки рассылки GPars много обсуждали поток данных против CSP, актеров и т. Д., И это отличное место, чтобы задавать вопросы.

Некоторые другие полезные ссылки:

Clojure impl довольно прост, в основном создавая переменные потока данных поверх ссылок и следя за функциями на этих ссылках. Вы можете найти код или тесты более полезными, чем документы.

Канонический пример, приведенный с переменными потока данных, - это таблица, где каждая переменная является ячейкой в ​​таблице, определяемой значениями из других ячеек. Когда одна ячейка изменяется, изменения пульсируют вперед в порядке зависимости. Сами переменные потока данных несколько ограничены - я думаю, что потоки потока данных - вот где идея становится более интересной.

В некотором смысле идея облегченных узлов обработки, запланированных для (обычно меньшего) набора фиксированных потоков, каждый из которых связан с потоками, подобными очереди, описывает на очень высоком уровне все {потоки данных, акторы, CSP}. Во всех случаях цель состоит в том, чтобы поддерживать высокую пропускную способность, сохраняя узлы, у которых есть работа, чтобы работать, а не тратить циклы на узлы, которые не И, чтобы избежать пользователей, управляющих явными потоками и блокировками (отделенными через очереди / потоки / каналы между ними ).

...