2012-02-28 3 views
0

Мне нужно написать программу, которая одновременно выполняет 2 задачи для повышения эффективности. & высокий уровень отклика. Первой задачей является, например, получение данных видения с камеры &.параллельное программирование для управления роботом

Вторая задача - получить обработанные данные из первой задачи & do sth else с этими данными (стратегия управления роботом). Однако, в то время как задача управления роботом выполняется, прием данных камеры должен работать.

Есть ли решение для такого типа программирования в C++/C# ?? Я изучаю TBB, это правильный выбор? Тем не менее, я читаю такие вещи, как «параллелизация цикла», я иду в правильном направлении?

Это ссылка на очень общий стиль в программировании управления, когда компьютер используется в качестве центрального устройства для подключения к электронным устройствам (датчики) & приводов и всем этим устройствам обрабатывается одновременно

ответ

2

Нет, ваш пример цикла параллелирование использует параллельное программирование для ускорения результата вычисления для одного набора данных.

Что вам нужно, это многозадачность. Вы не указали какую-либо целевую архитектуру. Предполагая, что это будет встроенная система, как микропроцессор, у вас есть несколько вариантов. Есть встроенные микро-ОС, такие как VXworks и uC-OS, которые позволяют вам делать именно то, что вы просите. Это позволяет вам настроить несколько «задач», которые запускаются практически одновременно. Конечно, подлинный параллелизм невозможен с одним процессором, но планировщик в этих ОС разработан очень детерминированным для систем квази-реального времени, как вы описываете.

+0

да, если быть более конкретным. Я использую основной настольный ПК i7, win7. Я пытаюсь получить информацию обратной связи с камеры и управлять роботом с помощью этого ПК, VS2008 и OpenCV 2.1. Как я могу это сделать? если это многозадачность, какой инструмент выполнять на моей архитектуре? –

0

Звучит неплохо для меня! TBB OK, C# имеет полезные классы threadpool и т. Д. Только одно, если вы еще не сделали ничего подобного раньше - все дело в данных, а не в коде. Если вы правильно спроектируете поток данных, код напишет сам, (ну хорошо, не совсем :).

+0

есть. Я просмотрел книгу TBB. TBB также используется для программирования игр, разделения рендеринга, физических задач и их распараллеливания. Тогда, я думаю, это относится и к моей проблеме. Это больше о том, как разбить большую задачу на небольшие параллельные единицы задач. Тем не менее, это занимает много времени ... учиться. : | –

Смежные вопросы