|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 34554. Ответов 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
|
|||
| 27.05.2020, 22:35 [ТС] | |||
|
ок покручу... в смысле future для этого и имела ввиду...
и в принципе по пулу есть примеры: This is an example illustrating the use of the thread_pool object from the dlib C++ Library. In this example we will crate a thread pool with 3 threads and then show a few different ways to send tasks to the pool. Распараллеливание сортировки, thread pool ... тут главное понять (в моём тз), где mutex(es) включать, где выключать? Добавлено через 1 час 32 минуты Простой пул потоков
там же ответ:
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||||||
| 28.05.2020, 10:25 [ТС] | |||||||
Класс для очереди задач м. см. в теме: Реализовать пул потоков, в который можно помещать функцию Кликните здесь для просмотра всего текста
? там почему-то пустой public:
думала, уже здесь можно mutex задать?? Добавлено через 8 минут p.s. для погружения в тему: (pdf) C++ Concurrency in Action Добавлено через 2 часа 15 минут Синхронизация пула потоков
0
|
|||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 28.05.2020, 10:31 | ||
|
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||||
| 28.05.2020, 17:43 [ТС] | ||||||
|
oleg-m1973, спасибо!, я хоть теперь в нужном направлении копаю - и уже что-то начинаю понимать...
1) кстати, встретилось, что 1 мьютекс на 1 элемент - очень жирно будет, обычно выделяют 1 мьютекс на 10 потоков, насколько поняла, т.е. на 10 элементов... 2) синхронизация что-то вроде... или здесь Кликните здесь для просмотра всего текста
3) убить поток сложно - делать этого не нужно - т.к. проблеиатично освободить ресурсы, позакрывать сокеты и выполнить др. рутину... даже если если поток остановить из др потока 3)хотя boost'овские потоки можно interrupt и они надёжнее, чем std 4) смысл потока - на очень дорогостоящих вычислениях можно получить результат, а поток завершиться уже после получения результата 5) если работа непродолжительна, то затраты на создание и уничтожение потоков могут повлиять на производительность в худшую сторону ... вобщем надо прикинуть - подгрузка из сети мелких текстовиков даже в большом количестве - до 3000 за раз - будет ли более выгодна... 6) и всё-таки потоки, наверно, лучше запускать по количеству ядер... иначе, наверно, задачи будут стоять в очереди на ядро 7) по работе с сокетами (а даже GET в С++ выполняется на открытом сокете - принимающем, - насколько понимаю) - всё равно на сокете может выполняться только 1 процесс -- поэтому неуверена, что параллельность поможет... хотя конкурентность моего тз - может и позволит распараллелить задачу подгрузки и задачу записи в файл... т.е. so named Instruction-Level Parallelism... не Data-Level Parallelism (8) исходя из (7) теперь понимаю, почему получала на Python (при использовании async-await) "Access Denied" - это от сокета... а я думала от того, что чужой сервер обычно позволяет 2-3 подключения с 1-го IP... имхо ...пока такие выводы...
0
|
||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 28.05.2020, 17:46 | ||
|
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 28.05.2020, 17:48 [ТС] | |
|
9) и в принципе и на cplusplus - есть пример класса (внизу)... хотя в яз. высокого уровня, повторюсь, можно и найти нужные классы... тот же boost... может только если установить отдельно boost_threadpool
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 28.05.2020, 17:49 | ||
|
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 28.05.2020, 17:49 [ТС] | |
|
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||||
| 28.05.2020, 17:53 | ||||||||
1
|
||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 28.05.2020, 17:55 [ТС] | |||
|
Добавлено через 1 минуту
0
|
|||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 28.05.2020, 18:01 | |||
|
Если ты блокируешь сразу 10 элементов, то эти элементы можно будет обрабатывать только последовательно, т.е. у тебя, грубо говоря, 10 потоков будут стоять и ждать своей очереди Добавлено через 1 минуту
1
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 28.05.2020, 18:03 [ТС] | ||
|
в 1к1 они (эти 10 например в целом) ведь всё равно, наверно, не смогут работать параллельно... а только по количеству ядер (например, у меня 2), а оставшиеся 8 из той же 10-ки - будут ждать очередь на ядроо... и затраты времени на lock/unlock при 1к1 всё равно могут превысить выигрыш от распараллеливания на 2 ядра... имхо
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||
| 28.05.2020, 18:08 | ||||
|
Добавлено через 1 минуту Добавлено через 28 секунд
1
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 28.05.2020, 18:13 [ТС] | |
|
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 28.05.2020, 18:15 | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 28.05.2020, 18:31 [ТС] | ||
и с такой скоростью ... не подумает ли чего плохого (даже слово это боюсь произнести вслух - 2 слова - 2-ое "атака")
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 28.05.2020, 18:33 | ||
|
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 28.05.2020, 18:59 [ТС] | ||
|
- они ведь вроде взаимозаменяемы... или семафоры имеют какие-то плюса? Добавлено через 4 минуты сегодня кстати наталкивалась на семафоры - Simple thread pool... там по линку перейти... но вроде сейчас в тренде condition_variable ?
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 28.05.2020, 19:03 | |||
|
Хотя, собственно, без разницы, как ты это ограничение реализуешь. Можно с помощью condition_variable, мьютекса и счётчика Добавлено через 2 минуты
1
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 28.05.2020, 20:38 [ТС] | ||
|
lock - закрывает поток, чтобы он там в себе что-то выполнял, что в коде; потом unlock - открывает его для join с основным потоком и выводом, чего надо; есть ещё: yield - "говорит планировщику выполнять другие потоки, может использоваться при активном ожидании" (надо разобраться при случае)... ... но в thread_pool - этот yield лишний... т.к. сам pool, насколько понимаю, - очень активно ожидает, выполняя всё остальное в pool'e (все потоки, запущенные в работу)... вообще по количеству в queue - можно и такое количество thread'ов в pool'e открыть?.. циклом... потом также join'ить циклом, видимо?... имхо
0
|
||
| 28.05.2020, 20:38 | |
|
В указанном 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, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|