Программирование потока данных - шаблоны и каркасы - PullRequest
15 голосов
/ 16 сентября 2008

Я только что наткнулся на предложенную библиотеку Boost :: Dataflow . Это кажется интересным подходом, и мне было интересно, есть ли другие подобные альтернативные платформы для C ++, и есть ли какие-либо связанные шаблоны проектирования. Я не исключаю, что Boost :: Dataflow, я просто смотрю на любые доступные альтернативы, чтобы я мог лучше понять домен и мои варианты (или свернуть свои собственные при необходимости).

Ответы [ 11 ]

5 голосов
/ 07 апреля 2010

Wikipedia

В Википедии есть пара хороших статей о теории программирования потоков данных:

Эти статьи написаны разными авторами, поэтому есть некоторые совпадения, и некоторые важные вещи отсутствуют, но это очень хорошая отправная точка.

TinyOS

Это операционная система с открытым исходным кодом, основанная на принципе потока данных. У меня плохие чувства по этому поводу: они даже не упоминают термин «поток данных». Хотя это так, и, может быть, стоит стоит изучить .

4 голосов
/ 19 ноября 2012

Посмотрите на Intel Threading Building Blocks , в частности, его tbb::flow пространство имен.

3 голосов
/ 10 февраля 2014

Я нашел несколько библиотек C ++ для потоков данных:

  • cellpp - позволяет использовать модель оценки электронных таблиц.
  • DSPatch и Route11 - платформы потока данных C ++. Позволяет писать программы в режиме потока данных. Выглядит интересно.
3 голосов
/ 21 февраля 2013

Вы также можете взглянуть на две основные платформы робототехники с открытым исходным кодом, ROS и Orocos . Существует также Rock , но он основан на Orocos, поэтому он эквивалентен, если вы просто ищете компонентную среду C ++.

2 голосов
/ 30 июня 2011

Только для записей, вы также можете рассмотреть gstreamermm , который является оболочкой C ++ для gstreamer .

2 голосов
/ 16 сентября 2008

Если вы хотите этот дизайн для обработки изображений или визуализации, вы можете найти хороший ресурс в itk . И если вам нужен графический интерфейс для этого потока (данных / работы), вы можете использовать devide . Мои 2цента, Johan

1 голос
/ 18 июля 2014

Вы можете проверить мою реализацию потока данных здесь: http://ambient.comp -phys.org

Он поддерживает MPI и многопоточность и основан на пользовательских типах потоков данных (то есть ambient :: vector), которые работают через систему управления версиями объектов во время выполнения.

1 голос
/ 29 июня 2013

Visual Studio Concurrency Runtime содержит асинхронный каркас потока данных в C ++.

Пример потока данных обработки изображения: http://msdn.microsoft.com/en-us/library/ff398050.aspx

0 голосов
/ 21 февраля 2013

Может быть, Pure Data (pd) имеет C ++ API ...

http://en.wikipedia.org/wiki/Pure_Data

0 голосов
/ 30 июня 2011

Программирование потока данных - это одна из тех вещей, которые скрывались на протяжении десятилетий и никогда не были полностью сняты ... для программного обеспечения в любом случае; В мире VHDL / Verilog вы, естественно, гораздо быстрее адаптируетесь к мышлению потока данных. Но в мире программного обеспечения ... каким-то образом оно никогда не выходит за рамки игрушечных систем, возможно, потому, что люди настаивают на том, чтобы связать его с визуальным программированием (и я вижу, что ускоренный поток данных также идет по этому пути ). Некоторые люди обращаются к программированию потоков данных, чтобы разрешить кризис программного обеспечения, сделав его более похожим на конструкцию HW с подключаемыми компонентами с соединяемыми контактами ... но, подождите, разработка HW тоже действительно сложная! (Интересно, что в то время как в Мировые системы визуального программирования HW существуют , никто на самом деле не использует их для создания чего-либо большого).

Самым интересным и активным современным примером из известных мне принципов использования потоков данных является PureData среда аудиовизуального программирования.

...