|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||||
Указатель указателя или Наследовать14.08.2020, 12:42. Показов 9513. Ответов 111
Метки нет (Все метки)
здесь
я вот тоже подумала (про своих баранов) - если у меня 2 thread'a (gui и secondary) и в secondary задан классом (как здесь), в котором работает функция, которая отдаёт массив в класс, ход обработки массива методом этого (куда отдаёт) класса - отразить в gui хочется... !?! вот передаю указатель на Form из класса gui в класс secondary worker thread... (как по примеру #222) а дальше?.. указатель на указатель параметром в др класс передавать? (что-то не проходит)? передаю банально:
как не пытаюсь передать указатель на указатель или тот же указатель на gui в др класс - выдаёт, что инициализация gui возможна только в первичном потоке... - а ведь только передать хочу указатель на то, что уже было проинициализировано в первичном потоке... т.е. на сам gui ИЛИ ??? может, мне лучше наследовать 2-й класс (loadV) от класса worker и в нём поле "принятый из gui указатель" сделать protected? (чтобы не заморачиваться передачей указателя на gui и уж тем более транслированием в gui поток из класса, куда передаём массив после его сбора в классе worker - который во вторично потоке от gui)...
0
|
||||||
| 14.08.2020, 12:42 | |
|
Ответы с готовыми решениями:
111
Как получить ссылку на указатель или указатель на указатель в массиве? |
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||||
| 16.08.2020, 12:19 [ТС] | |||||
|
я пока и остановилась на предыдущем варианте Архитектуры - GUI со вторичным потоком в нём для void work()... при смене GUI - правки в void work() всё равно делать надо будет на новый gui... чем гнать всё это через люмбду/функтор - инапрямую можно будет подправить == просто удобную разметку для себя в комментах набросать в проекте... чтобы при возврате свежим взглядом видеть сразу всё - где что зацепить надо...а при смене void work() - вообще просто новый void work() вставить - на случай рефакторинга... ![]() === протранслировать асинхронную подгрузку из вторичного потока (когда в класс направляется вектор всех) - тоже задача неахти - чтобы не останавливать рабочий поток, пока он синхронизируется с gui по тем линкам, которые уже загружены... но если проход по шагам подгрузки resumable - то может полУчиться... пока пробую == = Основная цель вопроса ветки: воспользоваться удобной архитектурой для того, чтобы протранслировать background asyncLoading в gui из вторичного потока (но не из него, а инстанса отдельного класса в нём)... (ну хоть разобрались нужен ли указатель на указатель или наследование класса asyncLoad от класса Worker - НЕТ)... Подумаю ещё - как сам класс asyncLoad разработать - чтобы не на скорую руку, а с удобствами... имхо (может, и не во всей архитектуре дело, а только в начинке этого класса - чтобы из его методов-членов не транслировать?) Добавлено через 9 минут а всё-таки возвращать в void work() и оттуда обычным Postcallback... при этом чтобы нормально эти, как их, точки прерывания (условно) не сбивались и, действительно, могли выполнять свою resumable природу?... сокет то один!... но это тоже как-то со скрытыми проблемами и возможностями (точнее их отсутствием) связано... поэтому ещё подумаю, как сделать красиво, читаемо (т.е. сопровождаемо) и репрезентабельно в gui (чтобы всё не молчало, пока все грузятся) ![]() Добавлено через 4 минуты Добавлено через 5 минут и всё равно c++ больше нравится, чем NET - не люблю зависить от чужих библиотек (и JIT-компиляции)... про Qt - убедили, предоставив убедительный аргумент
0
|
|||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||||||||||||||||
| 17.08.2020, 18:02 [ТС] | ||||||||||||||||||
|
Добавлено через 3 минуты P.S. WorkerThread.cpp
loadV.hpp
loadV.cpp
Добавлено через 22 минуты хотя по скорости, конечно, принтовать каждую строку отдельно в цикле - тоже не очень может быть... вобщем, дальше по ситуации
0
|
||||||||||||||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||
| 17.08.2020, 18:20 | |||
|
Добавлено через 4 минуты
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 17.08.2020, 18:21 [ТС] | |
|
так об этом и шла речь
пока не про Qt, в U++ только callbacks и свои варианты синхронизации с gui
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 17.08.2020, 18:22 | |
|
(правда для того, чтоб такое сработало, во вторичном потоке тоже должна происходить обработка очереди событий)
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 17.08.2020, 18:23 [ТС] | |
|
но спасибо за схему дизайна в Qt
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 17.08.2020, 18:35 | |
|
Но в любом случае - делать вызов ГУИ во вторичном потоке как в вашем случае ( m_pw->btnLoad.Enable(); в Worker'е) не будет иметь почти никакого смысла в плане производительности .Добавлено через 3 минуты + потеря времени на переключения при вызове GuiLock __; который определённо сработает как мьютекс, заставляя дожидаться потока, в котором в данный момент продолжается обработка ГУИ.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 17.08.2020, 18:46 [ТС] | |
|
вот скажите ещё, please, кто-нибудь - а как с этим делом в Visual Studio?.. удобнее, чем Qt или Qt самый удобный по взаимодействию gui и вторичного (т.е. рабочего) потока ?
WPF видела - обкатать не рискнула пока (вопрос времени был)
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 17.08.2020, 18:56 | ||
|
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 17.08.2020, 19:43 [ТС] | ||
|
0
|
||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 17.08.2020, 20:08 | ||
|
PS. Qt - это framework, его можно использовать и из Visual Studio.
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 18.08.2020, 12:47 [ТС] | |||
|
вот помню совет от GoshaM здесь про паттерн Команда
тогда понятно, почему в начале этой ветке рекомендация использовать класс(функтор), как, вероятно, самый оптимальный (короткий) вариант для реализации опосредованного взаимодействия с gui... ну если фвеймворк самой ide не даёт своих вариантов этого вида взаимодействия (как например в U++) и захочется как-то писать свою реализацию... Добавлено через 12 минут p.s. Организация рабочих потоков: управление состоянием движка Добавлено через 1 час 18 минут p.p.s. ввсё-таки стоит различать Software Architecture и Design Patterns (переход по external links отсюда обязателен)... потом остановится на Event-based, Implicit Invocation (по моей задаче)... потом остановиться на выборе Фреймворка... когда-нибудь найти время на него перейти... p.p.p.s/ mvc - лишь просто популярный design pattern для настройки связи между компонентами при компонентно-ориентированном программировании... имхо
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 18.08.2020, 14:06 [ТС] | ||
- всё-таки проверила - из класса ответ пришёл в gui ...(архив проекта-теста работающего прилагаю) ![]() p.s. хотя по фэн-шую "подписчика на event'ы" не помешает научиться организовывать... p.p.s. есть какой-то пример на U++ : which allows monitoring a folder and its sub-folders for file changes.
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 18.08.2020, 15:40 [ТС] | ||
|
btnStop - убрать, закомментировать - ещё не обрабатывала его
Добавлено через 1 час 21 минуту хотя Observer pattern - пока излишне, т.к. его цели:
0
|
||
| 19.08.2020, 01:03 | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||||||||||||||
| 19.08.2020, 16:40 [ТС] | |||||||||||||||
![]() ![]() вот хороший маленький пример - НО чувствую проблемы со временем жизни... если делать прямо в лоб:
0
|
|||||||||||||||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 19.08.2020, 16:47 | |
|
JeyCi, важен контекст захвата.
В вашем случае вы как бы говорили: "мой класс знает класс из GUI и зависит от него - реализуется с использованием". В том варианте, который был предложен, ничего такого не утверждается. Ваш класс в этом случае зависит от черного ящика. Контроллер передает черный ящик, в котором содержится контекст GUI. При этом передача эта локализована только контроллером, ее просто найти и заменить. Архитектура масштабируется через изменение контроллера, который обычно простой и маленький, а не через изменение логической части. Это всегда проще. Добавлено через 44 секунды JeyCi, не на том, короче, вы жирным шрифтом внимание акцентируете совсем. Добавлено через 2 минуты JeyCi, чем меньше у вас точек соприкосновения двух потоков, тем более надежная у вас получится программа. Именно поэтому в сложных системах используется Event-Driven архитектура. Точка соприкосновения в методе добавления события в очередь и в методе его извлечения. Больше никаких блокировок нет.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||||
| 19.08.2020, 17:02 [ТС] | ||||||
)...Добавлено через 4 минуты
Добавлено через 5 минут знаю, но ещё не созрела для переезда... Добавлено через 3 минуты идея!
0
|
||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 19.08.2020, 19:44 | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 19.08.2020, 23:04 [ТС] | |||
|
всё... поняла...
хочу абстракцию => делаю её реализацию... беру в оборот её инстанс => могу(должна) использовать его (или reference или pointer на него)... поэтому в #36 без этого никак (время жизни window никакое в др классе)... === пишу 2 и более абстракции => могу сделать и использовать одну функтором (объектом-функцией) для другой (других)... но чтобы использовать этот объект (функцю) => его абстракцию (т.е. класс) и должна оформить (сделать реализацию) передачей функции в конструктор... чтобы иметь возможность создать инстанс объекта-функции... наверно, можно ещё, как альтернатива, и просто пронаследовать от std::function... как-то так... ой не хочу усложнять пока... но функтор на самого себя (как хотела попробовать в #36) - глупая идея так зациклить input и output на один класс (т.к. сам объект-функция, как минимум, должен быть отдельным классом. ну или классом из std)... === просто в vba, pq, sql не создавала классы и уж тем более сами приложения... всем спасибо!! за введение и практические примеры для целей вникнуть в тему построения системы (программного продукта) ... и за любой сложности tips & tricks на будущее ![]() Добавлено через 7 минут Добавлено через 20 минут P.S. захватить [this] в workerthread() попробую завтра... чтобы попробовать в лямбде поработать с классом loadV... здесь
хотя она всё-таки анонимная функция(-объект)
0
|
|||
| 19.08.2020, 23:04 | |
|
Необходимость указателя на указатель Разыменование указателя на указатель Инкремент указателя на указатель
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|