|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 35845. Ответов 421
Метки вопросы наследования (Все метки)
начало было положено в ветке - Считать текстовые файлы из папки - там и возник вопрос об Архитектуре...
собрала... осталось отображение создать (типа I_tbl_Show) и пронаследовать ? в разные классы пункта назначения (или на консоль, или в файл, или в БД, или допустим ещё в форму)... N.B. классы (пункты-назначения) делать не надо - эти View уже реализованы разработчиками того ПО, на котором сейчас идёт работа... а) пока что можно просто прописать функции-члены класса; и по месту использовать, что надо при разработке - в файл или на консоль; б) в перспективе для Release - реализовать и откомпилировать и выгрузку и в файл, и выгрузку в БД, и отражение в DataGrid... === !! Т.Е. если в Release захочется и выгрузку в текст, и в БД, и допустим ещё в форму (например с разных кнопок сделать) - тут уж лучше и писать, как положено, наследование??... -- к слову из прошлой ветки о: === Обоснование выбора уровня Абстракции (I_tbl_Show со всеми виртуальными функциями): чтобы не дублировать код-сбора-для-выгрузки -- сделать class Table - и класс-интерфейс I_tbl_Show, в котором обозначить virtual-функции выгрузки... эти функции определить в др. классах - типа Interface (IwriteCSV, IwriteDB, IwriteDataGrid)... p.s. классы консоль, файл, бд, DataGrid - не создаём, т.к. эти пункты назначения уже присутствуют... p.p.s. вывести конечные интерфейсы с определёнными методами записи на кнопки... === ИЛИ то, что подчёркнуто чуть выше, стоит реализовать в одном классе Table, и здесь же задать все virtual функции ?? === на скрине: синие - классы, зелёные - интерфейсы (в с++ по сути тоже классы) птицами отмечены уже кое-как реализованные классы (2 птицы) курсивные стрелки - отсутствие наследования ![]() Добавлено через 7 минут вобщем вопрос: class Table и класс I_Tbl_Show - объединить или нет? Добавлено через 10 минут p.p.s. чтобы избежать проблем Ромба и такого: Неоднозначность при множественном наследовании
0
|
||||
| 11.03.2020, 10:51 | |
|
Ответы с готовыми решениями:
421
Проверка двух текстовиков
Сделать скрипт для вывода текстов из текстовиков |
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 02.07.2020, 11:26 [ТС] | ||
|
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 02.07.2020, 11:28 | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 02.07.2020, 11:35 [ТС] | ||
|
а вызывать др callbacks - они встанут в очередь на действие "а посля" - понимаю так... имхо (и по тому WhenAction, который "удивил", начав работать "а посля") Добавлено через 6 минут - там пробовала, потом закоментировала
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 02.07.2020, 12:06 | |
|
JeyCi, не вижу причин, чтобы это не работало. Пробуйте еще.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||||
| 02.07.2020, 12:16 [ТС] | ||||||
|
и что самое интересное - (во вторичном потоке) -
p..s. вообще лок или сигнал в очередь на обработку - думаю не принципиально для отражения в status... когда же в GUI надо сбрасывать много рисования, например, из вторичного потока, когда ему самому ещё работать и работать - то это лишь вопрос быстродействия останется... с сигналами, возможно, и можно не тормозить сильно... но оставлять всё на "а посля" - выигрыш по времени тоже сомнительный... вобщем пробую дальше
0
|
||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 02.07.2020, 12:22 | |||
|
А вот гораздо более важная проблема верного распределения ответственностей решится раз и навсегда. Представьте себе художника, который рисует картину. И несколько других людей, которые в рандомные моменты времени останавливают его и дорисовывают что-то сами. Вот именно так сейчас у вас и работает. Я достаточно писал сам и видел систем, наподобие этой UPP, чтобы сказать, что это путь в никуда.
1
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 02.07.2020, 12:31 [ТС] | |||
|
DrOffset-у, спасибо!! за знакомство с deadlock'ом - профи всегда его распознают... пока вы Avazart, кричите, что вам мьютексы (лок) и слипы (любое действие вместо него) глаза мозолят - так и не смотрите на них, что ли... ![]() Добавлено через 7 минут
0
|
|||
| 02.07.2020, 12:31 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 02.07.2020, 12:35 | |
|
JeyCi, в общем я понял, что пока вы сами этот кирпич не словите, будете спорить. Ну ладно, я подожду.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 02.07.2020, 12:54 [ТС] | |||
|
Добавлено через 2 минуты воочию сам deadlock, чем читать о нём в книжках... или ещё какие тонкости многопоточности
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||||||||||||
| 02.07.2020, 12:56 | |||||||||||||||||
Сообщение было отмечено JeyCi как решение
Решение
JeyCi,
main.cpp
TestThread.h
TestThread.lay
1
|
|||||||||||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 02.07.2020, 13:42 [ТС] | ||
|
но RWLock может даже попроще, чем Mutex в U++ == За PostCallback - спасибо!! - его тоже надо было как-то увидеть воочию - с кнопки, запускающей доп. поток, который Правильно ставит в очередь свои коллбэки... увидела на родном примере - и сразу всё становится на свои места... у этого кода ноги растут нормально... Благодарю! буду изучать и применять
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||
| 02.07.2020, 13:54 | |||||||
|
JeyCi, или можно оставить GuiLock, но изменения в виджете надо делать не напрямую, а через функцию Call.
Тогда поточная функция из моего примера выглядеть будет как-то так: Кликните здесь для просмотра всего текста
Добавлено через 6 минут Добавлено через 2 минуты Это тоже, кстати, полезный навык выделять главное из цельного описания.
1
|
|||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 02.07.2020, 14:03 [ТС] | |||
просто реставраторы ещё и поверх нарисованного могут нарисоват, чтобы выровнять или искривить )...
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||||
| 02.07.2020, 14:11 | ||||||
![]()
И работает оно так, потому что это единственный способ контролировать сложность. По-другому просто не получится.
Выстрелить это может, если у вас есть два или более потоков одновременно меняющих GUI.
1
|
||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 02.07.2020, 14:23 [ТС] | ||
|
хотя по сути задачи понадобиться WorkQueue... по сути... или одно другому не мешает (thread_pool и workqueue)?.. да ещё и выстрелить может? (в thread_pool'e? или в thread-safe workqueue'е?)
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 02.07.2020, 14:30 | |
|
JeyCi, нет, я неправильно выше сказал. Все, что приходит из потоков будет упорядоченно очередью. Речь видимо все-таки о работе основного потока.
Проще всего не допускать этого совсем, и не разрешать менять из основного потока то, что может измениться под влиянием второстепенных.
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
| 02.07.2020, 17:59 [ТС] | ||||
- вот это объяснение! - на все случаи жизни... понимание - которого мне очень не хватало, чтобы не остерегаться потоков... Thanks a lot !! ![]() Добавлено через 13 минут p.s. всё-таки добавлю: или блокировать (синхронизировать)... если вдруг случится такое, что надо всё-таки... Добавлено через 3 часа 5 минут p.p.s и чтобы, обойдя одни грабли, не попасть на вторые - я процитирую вас ещё раз p.p.p.s. про Atomic (полагаю. lock-free возможность обеспечивать thread-safety) - отдельная история - oleg-m1973 оставлял здесь (#159) линк вот и ИТОГ всех сложностей (в придачу к принципам SOLID) Добавлено через 1 минуту ... а паттерны - это уже предпочтения дизайнера - исходя из проф.опыта...
0
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 03.07.2020, 09:00 [ТС] | ||
|
отметила в теме Лучшие ответы по теме - 4-й отметить не могу (видимо есть лимит) - оставлю линком на #103
0
|
||
| 03.07.2020, 09:00 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы.
Карта этого меню приложена ниже.
Нужный пункт выделен красным.
Сервис
Настройки
Поведение
|
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки.
Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён".
Изменено отображение буквы Й.
Добавлена. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|