Форум программистов, компьютерный форум CyberForum.ru

Параллельная работа лифтов - C++

Восстановить пароль Регистрация
 
Pro100Ferrari
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 11
13.12.2013, 12:35     Параллельная работа лифтов #1
Задача реализовать модель системы управления лифтами. Функция управления одним лифтом написана, выполняется корректно. Вопрос в том, как реализовать, чтобы эта функция выполнялась для 10 лифтов параллельно? Какие могут быть варианты реализации? Какие методы параллельной работы?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.12.2013, 12:42     Параллельная работа лифтов #2
Pro100Ferrari, используйте потоки и мьутексы.
Pro100Ferrari
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 11
13.12.2013, 12:52  [ТС]     Параллельная работа лифтов #3
А как тогда синхронизировать все это дело. У меня функция примерно следующего вида:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
for()
     Находим что-то пусть А
        for(по А)
         что-то ищем пусть B 
              if(B == чему-то)
              {
                   что-то выполняем
                   if()
                   {
                          for()
                              что-то еще выполняем
                   } 
              }
              else
              {
                   что-то выполняем
                   if()
                   {
                          for()
                              что-то еще выполняем
                   }    
              }
Т. е. если у меня большая вложенность. В реальной проге около 10-12 приведенного типа. Плюс еще визуализация в StringGrid. Пробовал разные блоки кода ограничивать мьютексами, но работало не корректно.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.12.2013, 14:07     Параллельная работа лифтов #4
Цитата Сообщение от programina Посмотреть сообщение
Pro100Ferrari, используйте потоки и мьутексы.
Зачем здесь мутексы?

Добавлено через 17 секунд
Цитата Сообщение от Pro100Ferrari Посмотреть сообщение
А как тогда синхронизировать все это дело.
Зачем?
Pro100Ferrari
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 11
13.12.2013, 14:10  [ТС]     Параллельная работа лифтов #5
Если не использовать потоки, то как обеспечить параллельную работу? Синхронизация, чтобы потоки не портили разделяемые данные.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.12.2013, 15:44     Параллельная работа лифтов #6
Цитата Сообщение от Pro100Ferrari Посмотреть сообщение
Если не использовать потоки, то как обеспечить параллельную работу?
Ни как. Для параллельной работы потоки обязательны, но не достаточны. Надо ещё иметь соответствующее количество ядер (с учётом того, что они могут быть и в разных процессорах, а одноядреный процессор многопроцессорной машины считается за одно ядро), а система должна поддерживать их одновременное использование одним процессом. Только зачем здесь истинный параллелизм? Кроме задач, с которыми одно ядро тупо не справляется, для всех остальных достаточно многопоточности, которая есть логический параллелизм в единицах времени, больших системного кванта времени.
Цитата Сообщение от Pro100Ferrari Посмотреть сообщение
Синхронизация, чтобы потоки не портили разделяемые данные.
А разве лифты обращаются к общим данным?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2013, 17:32     Параллельная работа лифтов
Еще ссылки по теме:

Параллельная обработка C++
C++ Параллельная обработка файлов
Параллельная работа с файлами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Pro100Ferrari
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 11
13.12.2013, 17:32  [ТС]     Параллельная работа лифтов #7
Вобщем, я разобрался как все это сделать. Настоящего параллелизма нету конечно. Каждый поток т.е. лифт обращается к своей части массива, но были разделяемые переменные. Их я убрал из кода и заменил массивами, чтобы снова каждый лифт обращался к своей части массива. Параллелизм мне нужен был только ради визуального создания эффекта, что лифты одновременно, независимо функционируют. После замены переменных потребность в синхронизации отпала и все заработало нужным образом. Всем спасибо.
Yandex
Объявления
13.12.2013, 17:32     Параллельная работа лифтов
Ответ Создать тему
Опции темы

Текущее время: 21:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru