Коммуникация между параллельными потоками

Общие принципы, проектирование, модуляризация, темплейты и шаблоны
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение Confocal »

Возможно и так, но я не пойму как верхний цикл будет обращаться к нижнему...
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение Eugen Graf »

Ну я имел ввиду если нижнему циклу нечем занятся, то пускай время от времени опрашивает прибор. А если верхний цикл посылает ему какую нибудь команду, то он её выполняет и дальше себе занимается себе опросом прибора.
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение Confocal »

а...понятно, проверю. Если нужно передавать команды второму циклу и данные с приборов то
делать разделение на очереди (командные, измеренных данных), т.е. открывать 1, 2 и т.д очереди?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение Eugen Graf »

Нет, на каждый параллельный цикл хватит по одной очереди.
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение Confocal »

ну а если нужно опрашивать один прибор несколькими командами параллельно - нужно ли их разделять на потоки?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение Eugen Graf »

Именно если параллельно, то да. Но мне кажется если прибор один, параллельность здесь не нужна, опрашивай в одном потоке последовательно.
У меня принцип такой - сколько приборов, столько и потоков. В общем каждый отдельный поток отвечает конкретно за какой нибудь прибор.
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение Confocal »

eg писал(а):А что если в нижнем цикле выставить таймаут при чтении очереди? Тогда она сама по себе будет опрашивать прибор и посылать данные в верхний цикл.
да, а в нижнем цикле я считанные данные и посылаю в enqueue element? Вообще верхний цикл является продюсером, т.е. выдает команды нижнему, а когда нужно чтобы нижний выдал дынные без запроса верхнего...вот тут не ясно.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение Eugen Graf »

Я же уже предлагал встроить таймаут в нижний цикл, тогда он будет сам по себе опрашивать прибор, и будет при этом являтся и продюссером и консумером.
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение Confocal »

да, нижний цикл теперь опрашивает данные с прибора, но как их передать в верхний?!
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение Eugen Graf »

Fire User Event
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение Confocal »

Спасибо, работает! Теперь о коммуникации между сабВП и главным ВП. Допустим мне нужно из верхнего цикла главного
ВП вызвать подприбор. Как поступают в этом случае: открывать лицевую панель из верхнего цикла главного ВП, а обрабатывать команды и снимать данные через параллельный цикл главного ВП или же передавать данные в отдельный поток подприбора и все обращения к командам из сабВП делать из в параллельном цикле главного ВП?
Аватара пользователя
Михаил23
adviser
adviser
Сообщения: 219
Зарегистрирован: 24 ноя 2008, 17:58
Версия LabVIEW: 2009
Откуда: Москва

Re: Коммуникация между параллельными потоками

Сообщение Михаил23 »

Добрый день! Подскажите зачем нужны notifier на примере Tasking_Exxample 2. Правельно я понял что:
первый цикл- регистрация событий пользователя и отображение данных на лицевой панели
второй цикл- чтение данных с портов приборов и т.д.
третий- обработка данных из цикла 2
???????
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение mzu2006 »

А где лежит этот пример?
Аватара пользователя
Михаил23
adviser
adviser
Сообщения: 219
Зарегистрирован: 24 ноя 2008, 17:58
Версия LabVIEW: 2009
Откуда: Москва

Re: Коммуникация между параллельными потоками

Сообщение Михаил23 »

mzu2006 писал(а):А где лежит этот пример?
http://www.labviewportal.eu/download/file.php?id=1503 или на первой странице этой темы.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Коммуникация между параллельными потоками

Сообщение mzu2006 »

Михаил23 писал(а):зачем нужны notifier на примере Tasking_Exxample 2
Это просто пример.

Сложно угадать, но может быть eg имел в виду, что изменения происходят так быстро, что имеет смысл лишь последнее значение flag либо Number?

IMHO, вместо notifier, там могла бы быть и queue.
Ответить

Вернуться в «Модели программирования»