|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 35434. Ответов 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
|
||
| 13.07.2020, 21:12 [ТС] | ||
|
насколько я понимаю, через ядра проходят вызов функций и параметры функций... остальное можно крутить в куче... правильно ли я понимаю? Добавлено через 3 минуты а методы классов?
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 14.07.2020, 11:43 | ||
|
1млн раз запускается сортировка массива из 10 элементов. {1, 500} и std::async отрабатывают примерно одинаково и в 2-3 раза быстрее, чем {8, 0}, в котором новые потоки не создаются. В одном потоке, работает в 4 раза медленнее, чем {1, 500} и std::async (немного для 8 ядер, но накладных расходов в пулах потоков, всё-таки дофига).
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 14.07.2020, 12:23 | |
|
oleg-m1973, для std::async нет гарантии, что внутри будет обязательно пул потоков. Надо смотреть конкретную реализацию.
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 14.07.2020, 12:55 | ||
|
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 14.07.2020, 13:18 | |||
|
Я просто уточнил, что за std:;async не гарантируется пула потоков, поэтому на каком-то компиляторе твои выводы насчет него окажется нельзя использовать. Добавлено через 16 минут
0
|
|||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
| 14.07.2020, 13:22 | ||||||
|
DrOffset, я имел ввиду, что для того чтобы один поток на ядро дал преимущество, алгоритм надо специально организовывать в расчёте на такое исполнение. В пуле же потоков выполняются обычные задачи, ни под что не оптимизированные, поэтому на пуле c одним постоянным потоком и пятьюстами временными они выполняются в разы быстрее, чем на нескольких фиксированных потоках.
У меня в потоке для теста запускалась вот такая функция, безо всяких блокировок
0
|
||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 14.07.2020, 13:25 | |
|
oleg-m1973, я не об этом. Пул потоков может быть организован и на фиксированном количестве единожды созданных потоков - это вопрос реализации.
Я пока что просто спросил есть ли возможность дать посмотреть код, которым эта функция запускалась, или нет.
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 14.07.2020, 13:26 | |||||||
|
Вот так запускаю для std::async
0
|
|||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 14.07.2020, 13:32 | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 14.07.2020, 20:53 [ТС] | |||
|
запускать с std::vector<std::future<void>> futures, видимо, стоит пробовать для асинхронности?... а прямой путь к пулу потоков всё-таки, думаю, в этом:
0
|
|||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 14.07.2020, 21:06 | ||
|
Проблема была в дополнительном потоке, который в случае, если очередь задач не пустая и нет свободных потоков, запускает новый рабочий поток.
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 14.07.2020, 22:35 [ТС] | |
|
справилась с SocketWaitEvent...
но всё-таки уточню перед тем, как внедрять в весь проект... - мне кажется, что SaveFile тоже операция блокирующая IO ?? - ведь HDD-пространство - общее - понимаю так... правильно ли понимаю?.. потому что сохраняются файлы всё равно последовательно др. за др., хоть и вываливаются в list GUI все сразу (тестово 10 штук)
0
|
|
|
|
|
| 14.07.2020, 22:53 | |
|
Вроде как файл могу сохранятся за один проход если файл будут лежать рядом в близких секторах.
Т.е. там своя очередь что которая оптимизирует работу HDD. Так что думаю смысл есть делать асинхронным, а на деле нужно проверять.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
| 15.07.2020, 10:48 [ТС] | ||||
|
наверно, выбрасывается в list - быстро, т.к. нет тормозов... а подгружается последовательно - это время на переключение контекста работы сокета... имхо... вобщем благодарю всех - справились одним махом... даже без очередной ветки ![]() === а вообще открыла кн. Холлингворта по Borland'у - в принципе во всех этих многопоточных сложностях всего 3 этапа (на примере мьютекса): - CreateMutex - WaitForSingleObject - ReleaseMutex = вот 2-й этап в природе действует, судя по всему, также, как наш сокет на физическом уровне... т.е. ожидающе === осталось AtomicRead и AtomicWrite в U++ обкатать... и совет, встречавшийся, переварить: "нужна Двойная защита при использовании потоков - надо защищать и общие переменные (через atomic или мьютексы и т.д.) и read-write memory barriers расставлять (RWLocks in u++), где надо... === логика, правда на C#: memory barriers
0
|
||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 15.07.2020, 11:32 | ||
|
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 15.07.2020, 11:53 [ТС] | |||
0
|
|||
|
|
|||
| 15.07.2020, 13:05 | |||
|
Добавлено через 2 минуты Добавлено через 3 минуты Насчет HDD я просто оставлю это тут https://1cloud.ru/blog/proizvoditelnost-diskov .
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 15.07.2020, 17:02 [ТС] | |||
|
Не по теме: Добавлено через 12 минут суть сомнений по HDD была лишь в том - сначала резервируется место на диске под запись, а потом туда пишется инфо ИЛИ сначала просто создаётся handler на новый файл (CreateFile) и системе не важно, сколько в этот файл зальют инфо... лишь точно зная по 1-му или 2-му сценарию идёт запись в файл (и мне даже кажется, что по 2-му) - можно не думать лишнего о том "чтобы не конфликтовали" данные из разных потоков при записи на hdd... имхо Добавлено через 58 минут === а про барьеры: Memory Barriers Барьеры памяти (чтобы код подчистить, где надо, - чтобы потом не нарваться на неожиданности) Добавлено через 16 минут и пример кода, где всё-таки удаётся достичь выигрыша по скорости соразмерно количеству ядер (если верить автору или проверить)
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 16.07.2020, 08:24 [ТС] | |||
не совсем... значит есть над чем работать ...запустила код на Python - с async-await и aiohttp - там файлы вываливаются все в папку назначения и по скорости выигрывают - значит есть над чем работать ...но это уже др. тема т.к. идём по 2-му кругу, начиная с #174 Qt не предлагать, т.к. When will async/await pattern appear in QT? в С++20 coroutines уже перешли из boost -- просто поставить MSVC компилятор (с его ассемблеровсой частью ml.exe)
0
|
|||
|
|
|
| 16.07.2020, 12:55 | |
|
async/await pattern как бы не определяют асинхронность это лишь дизайн.
0
|
|
| 16.07.2020, 12:55 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|