|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 35711. Ответов 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
Проверка двух текстовиков
Сделать скрипт для вывода текстов из текстовиков |
|
|
||
| 29.06.2020, 22:59 | ||
|
По этом либо задания должны быть легкими и выполнятся за не критичное по длительности время или же все же придется использовать атомик и расставлять точки "отмены". И тут уж не такие и большие "трения" атомик все же не мютекс. Добавлено через 2 минуты В любом случае лучше тут нужен wait.
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 29.06.2020, 23:21 [ТС] | ||
|
(пока не многопоточно - без thread pool'a) Добавлено через 10 минут дело даже не в том, что зависает (наверно, синхронизацию надо подправить) - а в том, что с момента disconnected до момента появления окна PromptExclamation - проходит время... хотя, действительно, - надо, наверно, пробовать синхронизацию сделать главным потоком?... чтобы даже это время проходило не заметно... но загрузка то в др. классе (кл downloader)... вот тоже пока задумалась?..
0
|
||
|
|
|
| 29.06.2020, 23:22 | |
|
Ну есть таймаут соединения и таймаут чтения пока не отработают будет висеть.
Можно конечно пробовать принудительно сокет закрывать, но это зависит от библиотеки и вообще насколько целесообразно резко останавливать.
1
|
|
|
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
|
||
| 30.06.2020, 00:55 | ||
|
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||||||
| 30.06.2020, 07:04 [ТС] | |||||||
... а надо бы, наверно, как в моём кривом коде
0
|
|||||||
|
|
||||
| 30.06.2020, 09:36 | ||||
|
И никто не читает по байтам, вполне нормально проверять флаг после N прочтенных байт. Как детально разбивать зависит от ситуации и требований. Добавлено через 2 минуты Добавлено через 1 минуту
0
|
||||
|
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
|
||
| 30.06.2020, 14:51 | ||
|
И еще раз объясню вам, что выход по левой переменной, какой вы предлагаете не завершит поток, а завершит одно текущее задание и поток получит новое задание из очереди. У вас все потоки в итоге, скорее всего начнут выполняться последовательно т.к. сразу вначале нового задания будут пытаться обратиться к этой переменной. И вот если осталось 2000 заданий и у вас будет 2000 бесполезных вызовов WorkP.
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||||||
| 30.06.2020, 18:23 [ТС] | |||||||
|
Добавлено через 45 секунд Добавлено через 1 минуту Добавлено через 1 минуту Добавлено через 8 минут Добавлено через 3 минуты пока перспектива в начале ветки и в середине
0
|
|||||||
|
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
|
||||||||||||
| 30.06.2020, 18:24 | ||||||||||||
|
Вы явно предлагаете примерно так отмену делать:
1
|
||||||||||||
|
|
||
| 30.06.2020, 18:37 | ||
|
Можно и так но сути не меняет от слова совсем.
Добавлено через 3 минуты Отчасти по тому что в Вашем коде был Sleep я его и назвал гавнокодом.
0
|
||
|
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
|
|
| 30.06.2020, 19:07 | |
|
Avazart, мне надоела эта пустая перепалка. Если вам есть что сказать, по сути, давайте вы напишите свое видение программы, что я написал в сообщении 222.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
| 30.06.2020, 20:55 [ТС] | ||||
дождаться флага и Cancel() thread... мне в моей вба-шной манере тоже приходила в голову только такая мысль... НО если мы хотим пул-потоков, то тут вообще как-то всего Worker'a надо ликвидировать, не каждую конкретную thread... имхо... НО последняя цитата очень интересный know-how...вообще, я пока без комментов - мне кажется, немного беспредметны некоторые споры - если не влазить во внутренности CoWork... но лезть туда очень не хочу... поэтому спасибо за каждый share experience!.. - на все случаи жизни... но по сути, с этими http.requests, ещё и Queue придётся выстраивать, жаль, что тоже не очень компилится моим mingw пример из ide... вобщем буду смотреть пробовать - чуть что добавлю конкретики... не хочу ставить MSVC...
0
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||||||||||||
| 01.07.2020, 17:36 [ТС] | |||||||||||||
|
1. запуск с кнопки Thread.Run -> в которой 2. запуск длинной (на всю загрузку всего) void workerThread 3. флаг вне класса myWindow (т.к. void workerThread вне класса) 4. кнопку Стоп
остановить функцию в доп. потоке удаётся... НО thread, видимо, не закрывается... т.к. status не меняется и уже не виснет (как закомментировать то, что закомментировала)... в принципе для 1-го потока - как вариант - но со статусом ещё разобраться... - и всё-таки выход из функции - ещё не закрывает автоматически поток... имхо...класс Thread u++ не выполняет ни ShutdownThreads(), ни Exit() в таком контексте, наверно. или что-то ещё... про Wait() пока промолчу, как указала выше:
p.s. для thread_pool -- вариант от GoshaM "по-человечески" клеить Добавлено через 7 минут или 1 Thread тоже заворачивать в CoWork - чтобы останавливать по-человечески?
0
|
|||||||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||||||||||||
| 01.07.2020, 20:20 [ТС] | |||||||||||||
|
oleg-m1973 оставлял здесь вариант - для STD... но для U++ что-то не очень предусмотрено "остановить поток" в классе Thread - или work.ShutdownThreads() надо подумать, откуда выполнять при экстренном выходе... имхо... или опять дело в компиляторе?..
Добавлено через 9 минут Добавлено через 49 минут .h
.cpp
0
|
|||||||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 01.07.2020, 20:59 | |
|
JeyCi, как правило логику остановки потока должны писать вы сами. Универсально и безопасно на библиотечном уровне это сделать в общем случае нельзя.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 01.07.2020, 21:11 [ТС] | |
|
DrOffset, да я видела на форуме U++ , что чтобы остановить поток - много рутины надо выполнить - и зависит она от того, что там is executing тот поток...
поэтому и думаю, что надо выкручиваться как-то в те моменты, когда он ничего не executing - если таковые возможно отлавливать... может, во время его спячки или ещё когда... вобщем ещё покручу примеры от GoshaM...Добавлено через 1 минуту в любом случае - одного выхода из функции мало, чтобы завершить поток
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 01.07.2020, 21:14 | |
|
JeyCi, выход из функции потока + join. Этого достаточно.
1
|
|
| 01.07.2020, 21:14 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу (вариант №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. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|