![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: 1 Всего: 1 |
Доброго времени суток. Есть у меня задача (обрисую упрощенно): есть GUI, состоящий из списка и дерева. Каждый элемент дерева (и списка тоже) имею свою m_pData (допустим это некий автомобиль), причем автомобиль представлен как в дереве, так и в списке. Есть некий диалог который меняет атрибуты автомобиля. Соответственно мне нужно (не закрывая диалога) обновить данные по этому автомобилю как в дереве, так и в списке. Я подумал сделать так:
То есть и дерево и список подписаны на это событие. По сути и дерево и список пройдется по своим элементам и вернет мне те элементы, которые "ссылаются" на мое авто, а потом я их обнвовлю. Меня смущает вот что: если сигнал многопоточный, то получится, что в itemsToRefreshVec будет попытка записи из разных потоков. А может такую задачу вообще по-другому решают? P.S. а вообще реальная задача отличается тем, что сейчас есть просто список и проблем с многопоточностью нет, но я точно знаю, что скоро их будет много =)) |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
boost.signals - не многопоточный.
boost.signals2 - многопоточный. но в вашем коде я не вижу никакого намека на многопоточность... не понятно откуда возник вопрос. |
|||
|
||||
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: 1 Всего: 1 |
Сейчас сделал тестовый пример. Связал с сигналом 10 функций добавления элементов в один вектор. Вызвал сигнал. Вроде отработало последовательно, то есть в порядке как делал connect. То есть все-таки он не многопоточный?
Добавлено через 6 минут и 27 секунд Ну как нет намека =). По моим размышлениям, если я сделаю connect с 10 списками и вызову сигнал, то он может запустить (условно) 10 потоков на функции, которые с ним связаны. Отсюда возможное обращение к вектору из разных функций. Добавлено через 7 минут и 28 секунд Ну судя по всему в моем случае бояться нечего. Однако интересует теперь другое: я правильно подошел к решению задачи? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
boost.signals не создает потоков. он замыкает каждый callable слот на вызывающий поток. а в чем задача? |
|||
|
||||
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: 1 Всего: 1 |
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
xTr1m, вы путаете многопоточность и ассинхронность..
сигнал просто передает вызов одному или нескольким подключенным слотам(колбякам ) |
|||
|
||||
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: 1 Всего: 1 |
Добавлено @ 16:43 Ну так эти слоты выполняются последовательно или параллельно? Это сообщение отредактировал(а) xTr1m - 15.2.2012, 16:43 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
последовательно. с чего бы им выполняться параллельно?
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
уже всё давно продумано и написано. называется это MVC - Model/View/Controller. В библиотеке, которую ты используешь, (я правильно понимаю, что это - MFC?) это называется Document/View -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: 1 Всего: 1 |
Штука в том, что я как раз пытаюсь от Document/View
А тут просто - подписался - пришло. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |