|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 34578. Ответов 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 архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение 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, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|