|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||
Указатель указателя или Наследовать14.08.2020, 12:42. Показов 9249. Ответов 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,549
|
|||||
| 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,549
|
||||||||||||||||||
| 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,549
|
|
| 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,549
|
|
| 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,549
|
|
| 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,549
|
||
| 17.08.2020, 19:43 [ТС] | ||
|
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 17.08.2020, 20:08 | ||
|
PS. Qt - это framework, его можно использовать и из Visual Studio.
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 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,549
|
||
| 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,549
|
||
| 18.08.2020, 15:40 [ТС] | ||
|
btnStop - убрать, закомментировать - ещё не обрабатывала его
Добавлено через 1 час 21 минуту хотя Observer pattern - пока излишне, т.к. его цели:
0
|
||
| 19.08.2020, 01:03 | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||||||||||
| 19.08.2020, 16:40 [ТС] | |||||||||||||||
![]() ![]() вот хороший маленький пример - НО чувствую проблемы со временем жизни... если делать прямо в лоб:
0
|
|||||||||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 19.08.2020, 16:47 | |
|
JeyCi, важен контекст захвата.
В вашем случае вы как бы говорили: "мой класс знает класс из GUI и зависит от него - реализуется с использованием". В том варианте, который был предложен, ничего такого не утверждается. Ваш класс в этом случае зависит от черного ящика. Контроллер передает черный ящик, в котором содержится контекст GUI. При этом передача эта локализована только контроллером, ее просто найти и заменить. Архитектура масштабируется через изменение контроллера, который обычно простой и маленький, а не через изменение логической части. Это всегда проще. Добавлено через 44 секунды JeyCi, не на том, короче, вы жирным шрифтом внимание акцентируете совсем. Добавлено через 2 минуты JeyCi, чем меньше у вас точек соприкосновения двух потоков, тем более надежная у вас получится программа. Именно поэтому в сложных системах используется Event-Driven архитектура. Точка соприкосновения в методе добавления события в очередь и в методе его извлечения. Больше никаких блокировок нет.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||
| 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,549
|
|||
| 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 | |
|
Необходимость указателя на указатель Разыменование указателя на указатель Инкремент указателя на указатель
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|