Программирование потока данных - шаблоны и структуры
Я просто наткнулся на предлагаемую библиотеку Boost:: Dataflow.
Это похоже на интересный подход, и мне было интересно, существуют ли другие альтернативные рамки для С++, и если есть какие-либо связанные шаблоны проектирования.
Я не исключал Boost:: Dataflow, я просто рассматриваю любые доступные альтернативы, чтобы лучше понять домен и мои параметры (или, если необходимо, свернуть свои собственные).
Ответы
Ответ 1
Википедия
В Википедии есть несколько хороших статей о теории программирования потока данных:
Эти статьи написаны разными авторами, поэтому есть некоторые перекрытия, и некоторые важные вещи отсутствуют, но это очень хорошая начальная точка.
TinyOS
Это операционная система с открытым исходным кодом, основанная на принципе потока данных. У меня есть плохие чувства по этому поводу: они даже не упоминают термин "поток данных". Хотя это и возможно, и, возможно, стоит изучить его.
Ответ 2
Посмотрите Intel Threading Building Blocks, в частности, его пространство имен tbb::flow
.
Ответ 3
Вы также можете посмотреть на две основные рамки робототехники с открытым исходным кодом, ROS и Orocos. Существует также Rock, но он основан на Orocos, поэтому он эквивалентен, если вы просто ищете инфраструктуру компонента С++.
Ответ 4
если вы хотите этот дизайн для обработки изображений или визуализации, вы можете найти хороший источник в itk. И если вы хотите использовать gui для этого потока данных (данных/работы), вы можете использовать devide.
Мои 2центы,
Johan
Ответ 5
Только для записей вы также можете рассмотреть gstreamermm, который является оберткой С++ вокруг gstreamer.
Ответ 6
Visual Studio Concurrency Runtime содержит асинхронную структуру потока данных в С++.
Пример потока данных обработки изображений: http://msdn.microsoft.com/en-us/library/ff398050.aspx
Ответ 7
Есть несколько библиотек С++ для потока данных, которые я нашел:
- cellspp - позволяет использовать модель оценки электронных таблиц.
- DSPatch и Route11 - Структуры потока данных С++. Позволяет писать программы в потоке данных. Выглядит интересно.
Ответ 8
Вы можете проверить мою реализацию потока данных здесь: http://ambient.comp-phys.org
Он поддерживает MPI и потоки и основан на пользовательских типах потоков данных (например, ambient:: vector), которые работают через систему управления версиями объектов во время выполнения.
Ответ 9
Если ваша область является генерацией/обработкой звука, используйте http://www.synthedit.com/
Это выглядит многообещающим, я нашел хорошие ответы на серьезные проблемы в документах SDK (полифония). Забавно, но они не упоминают слово dataflow.
Ответ 10
"Программирование потоков данных" - одна из тех вещей, которые скрывались в течение десятилетий и никогда не снимались... для программного обеспечения в любом случае; в мире VHDL/Verilog вы обнаружите, что гораздо более легко принимаете мышление потока данных. Но в мире программного обеспечения... почему-то это никогда не кажется более масштабным вне игровых систем, возможно, потому, что люди настаивают на связывании его вместе с визуальным программированием (и я вижу ускорение потока данных также проталкивает этот путь). Некоторые люди смотрят на программирование потока данных, чтобы решить кризис программного обеспечения, сделав его более похожим на дизайн HW с подключаемыми компонентами со связанными штырьками... но повесьте, дизайн HW тоже очень тяжелый! (Интересно, что, хотя в системах визуального программирования HW существуют , никто не использует их для создания чего-либо большого).
Самый интересный, активный современный пример, который я знаю об использовании принципов потока данных, - это PureData среда аудиовизуального программирования.
Ответ 11
Может быть, Pure Data (pd) имеет С++ API...
http://en.wikipedia.org/wiki/Pure_Data