|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 32420. Ответов 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,549
|
|||
| 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,549
|
|||||||
| 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,549
|
||||||
| 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,549
|
|
| 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,549
|
|
| 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,549
|
|||
| 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,549
|
||
| 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,549
|
|
| 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,549
|
||
| 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,549
|
||
| 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,549
|
||
| 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 архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|