|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||
Указатель указателя или Наследовать14.08.2020, 12:42. Показов 9208. Ответов 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
Как получить ссылку на указатель или указатель на указатель в массиве? |
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 19.08.2020, 23:16 | ||
|
Частные случаи функтора в С++: * Лямбда * Указатель\ссылка на функцию * Класс с переопределенным оператором ()
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||||||||
| 20.08.2020, 10:42 [ТС] | |||||||||||||
) ... думается всё-таки, что в таком варианте (1 рабочая абстракция с 2мя потоками - 1 для view и 1 для логики) - функтор - это лишнее усложнение будет === P.S. абстракции с функтором ещё буду учиться писать - если класс MyAppWindow всё-таки разрастётся настолько, что, действительно, потребует быть декомпозированным... P.P.S. пока во вложении как-то так MyAppWindow::WorkerThread
... думаю, на практике приложится... ну хоть с абстракцией и объектом, созданным ей, разобрались - где, что и как... функтор впридачу
0
|
|||||||||||||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
|
|
| 20.08.2020, 11:42 | |
|
Qt. Программа: цыплята (20 шт - 20 потоков) с разной скоростью клюют по зёрнышку с тарелки. На тарелке 100 зернышек. Когда тарелка пустеет, цыплята зовут маму, она приходит и наполняет тарелку. 20 потоков шлют сигналы в окно, и в окне отображается процесс поедания зёрен. Это то, что вы хотите?
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||
| 20.08.2020, 16:42 [ТС] | |||||
|
Добавлено через 9 минут возможно, 1 producer и будет несколько consumer'ов (в ооочень будущем)... пока producer'a просто сливать в txt... consumer'ы параллельно парсят и льют куда скажешь (txt или db или даже просто msgBox общее количество байт или потоков обработанных... ну и в gui gridview)... ну и обслуживающие всё это дело классы... в окно можно то, что от producer'а пока... потом то, что от consumer'ов (~600 шт), но главное - ключевые Exception'ы (даже по каждому Не по теме: вобщем, чтобы цыплята ещё сообщали, если у них несварение желудка или просто зёрна несъедобные... Добавлено через 11 минут p.s. (пока на распутье по-др нюансу [даже не этой ветки] - поэтому к этому тз ещё вернусь потом) Добавлено через 3 часа 0 минут или Semaphores (и для WindowsXP)
0
|
|||||
|
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
|
|||||||||||
| 20.08.2020, 21:15 | |||||||||||
Сообщение было отмечено JeyCi как решение
Решение
1
|
|||||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 21.08.2020, 16:57 [ТС] | |||
Благодарю! именно там и хотела GuiLock использовать по логике, где вы его указали... (слова коллбэки и макросы для меня ещё звучат страшно и по-новому - оттого и читаю по-диагонали в надежде найти знакомые для моей незрелой в ооп логики вырианты - вот и не обращаю внимание на главное, когда оно новое) Добавлено через 12 минут P.S. кстати с таким макросом формулировка "Callback Hell", вероятно, отпадает сама собой... THISFN - красиво и локанично
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 22.08.2020, 10:04 [ТС] | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 22.08.2020, 18:50 [ТС] | |
|
0
|
|
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
|
|||
| 28.08.2020, 11:05 | |||
|
1. Запустить несколько (много) потоков 2. Отобразить ход выполнения потоков на форме 3. По нажатию кнопки останавливать процессы (ставить на паузу) Вот в такой последовательности я бы и действовал. Нет смысла заниматься визуализацией потоков, если у вас не получается их запускать. Нет смысла заниматься остановкой процессов, если вы не видите их работу, и не можете проконтролировать старт/стоп. Ну и так далее. Начал бы я с одного потока, потом можно два, потом много. Нет смысла сразу бросаться в омут многих потоков (и получать множество ошибок), пока не отлажен хоть один. Добавлено через 1 минуту 1. Запустить несколько (много) потоков 2. Отобразить ход выполнения каждого потока на форме 3. По нажатию кнопки останавливать процессы (ставить на паузу) Вот в такой последовательности я бы и действовал. Нет смысла заниматься визуализацией потоков, если у вас не получается их запускать. Нет смысла заниматься остановкой процессов, если вы не видите их работу, и не можете проконтролировать старт/стоп. Ну и так далее. Начал бы я с одного потока, потом можно два, потом много. Нет смысла сразу бросаться в омут многих потоков (и получать множество ошибок), пока не отлажен хоть один.
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||
| 28.08.2020, 21:01 [ТС] | ||||||
|
а вообще очень много потоков лучше в thread-pool'e запускать (уже обсудили это на моей прежней ветке)... === кнопка bStopped пока нет - надеюсь, не будет шага назад... но о продолжении "линии жизни" рабочего потока ещё думаю... многое можно скинуть на сторону в др. классы... и даже др. потоки... сраслось бы всё общим планом в итоге всей архитектуры=== вот видела сегодня интересную ветку - Многопоточность и сигналы/слоты - про время жизни потока и способ его коммуникации с GUI (там линк есть)... странно оно всё как-то в Qt - переварить ещё надо
= пытаюсь прикинуть параллели с Event'ами в U++ ... и для U++фреймворка - с кнопкой для bool &bStopped - пока только такой вариант передачи или захвата вижу... - по ссылке & Добавлено через 5 минут но голова пока забита "раскадровкой" подзадач по классам... 1 класс - 1 ответственность
0
|
||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||||
| 29.08.2020, 11:07 [ТС] | |||||||||
|
и здесь; Два способа использования QThread и там же совет: P.S. споткнулась вчера об эту ветку (Function) - вариант как-то синтаксически не знаю, как выразить?.. (init по линку у меня не срабатывает)Добавлено через 1 час 52 минуты только если так (без ссылки на member-function, а лямбдой) Кликните здесь для просмотра всего текста
0
|
|||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 30.08.2020, 21:27 [ТС] | ||
|
и всё-таки класс Event<> и Gate в U++ ещё поковырять...
Добавлено через 2 минуты ProcessEvents
0
|
||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
|
|
| 30.08.2020, 22:37 | |
|
Допилил кнопки пауза и стоп, но работают нестабильно, иногда приложение вылетает с кодом 3 (не знаю что такое):
1
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 30.08.2020, 23:09 | |
|
alexu_007, как минимум неверный тип соединения сигнала и слота и отсутствует синхронизация разделяемых ресурсов - массива и двух булевых переменных.
0
|
|
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
|
|
| 30.08.2020, 23:26 | |
|
А какая там нужна синхронизация? Потоки никак не зависят друг от друга, результаты вычислений не передаются и никак не используются. Вся задача - нарисовать циферку на экране. Включилась переменная (флаг) в true - поток даже не останавливается, только перестает генерить сигналы. Уж это действительно пауза. Потоки флаг не переключают. Почему там возникает аварийное завершение - я не понимаю.
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 30.08.2020, 23:51 | ||
|
Тоже самое касается булевых переменных. У них изменение в основном потоке, и чтение во всех дочерних.
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 31.08.2020, 18:15 [ТС] | |
|
?? вот всё-таки чисто технически:
если событие - это сигнал (отправляемый в GUI, например), например макросом коллбэка, как в примере GoshaM... слот (в Qt) надо настроить в GUI... в U++ просто запускаем member-function от gui... в C# "события - это сигналы, делегаты - это слоты" === И ОБРАТНО: в Qt при обратном запуске сигнала (из gui в поток), например, смены флага isInterruptionRequested - на стороне workerthread'a надо настроить, полагаю, слот для его приёма и обработки... имхо ?? а в U++ если кнопкой запускаем Event в btnStopped смены флага isInterruptionRequested - как правильно по уму отловить в потоке? синхронизация через мьютекс?
0
|
|
| 31.08.2020, 18:15 | |
|
Необходимость указателя на указатель Разыменование указателя на указатель Инкремент указателя на указатель
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|